home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Mac OS SDK / Dev.CD Jan 98 SDK2.toast / Development Kits (Disc 2) / QuickTime Conferencing / Programming Stuff / Interfaces / QuickTimeConferencing.h next >
Encoding:
C/C++ Source or Header  |  1995-06-22  |  84.0 KB  |  1,981 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        QuickTimeConferencing.h
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Warning:    *** APPLE INTERNAL USE ONLY ***
  8.                  This file may contain unreleased API's
  9.  
  10.      Version:    Built by:            anonymous
  11.                  From:                QuickTimeConferencing.i, revision 13, dated 4/19/95
  12.                  With Interfacer:    1.1d8
  13.  
  14.      Bugs:        Report bugs to Radar component “System Interfaces”, “Latest”
  15.                  List the version information (from above) in the Problem Description.
  16.  
  17. */
  18.  
  19. #ifndef __QUICKTIMECONFERENCING__
  20. #define __QUICKTIMECONFERENCING__
  21.  
  22.  
  23. #ifndef __MEMORY__
  24. #include <Memory.h>
  25. #endif
  26. /*    #include <Types.h>                                            */
  27. /*        #include <ConditionalMacros.h>                            */
  28. /*    #include <MixedMode.h>                                        */
  29. /*        #include <Traps.h>                                        */
  30.  
  31. #ifndef __COMPONENTS__
  32. #include <Components.h>
  33. #endif
  34.  
  35. #ifndef __MOVIES__
  36. #include <Movies.h>
  37. #endif
  38. /*    #include <QuickDraw.h>                                        */
  39. /*        #include <QuickdrawText.h>                                */
  40. /*            #include <IntlResources.h>                            */
  41. /*    #include <Aliases.h>                                        */
  42. /*        #include <AppleTalk.h>                                    */
  43. /*            #include <OSUtils.h>                                */
  44. /*        #include <Files.h>                                        */
  45. /*    #include <Events.h>                                            */
  46. /*    #include <Menus.h>                                            */
  47. /*    #include <ImageCompression.h>                                */
  48. /*        #include <QDOffscreen.h>                                */
  49. /*            #include <Errors.h>                                    */
  50. /*        #include <StandardFile.h>                                */
  51. /*            #include <Dialogs.h>                                */
  52. /*                #include <Windows.h>                            */
  53. /*                    #include <Controls.h>                        */
  54. /*                #include <TextEdit.h>                            */
  55.  
  56. #ifdef __cplusplus
  57. extern "C" {
  58. #endif
  59.  
  60. #if GENERATINGPOWERPC
  61. #pragma options align=mac68k
  62. #endif
  63.  
  64. #ifdef __CFM68K__
  65. #pragma lib_export on
  66. #endif
  67.  
  68.  
  69. enum {
  70.     gestaltQuickTimeConferencing = 'mtlk'
  71. };
  72.  
  73. /*-----------------------------------------
  74.     QuickTime Conferencing component types
  75. -----------------------------------------*/
  76. enum {
  77.     kMTBrowserType                = 'brsr',
  78.     kMTConferenceType            = 'conf',
  79.     kMTControllerType            = 'mtcn',
  80.     kMTFlowControlType            = 'flow',
  81.     kMTIdlerType                = 'cabg',
  82.     kMTMemoryType                = 'bufl',
  83.     kMTNetworkType                = 'ntwk',
  84.     kMTRecorderType                = 'recd',
  85.     kMTSinkStreamDirectorType    = 'sksd',
  86.     kMTSourceStreamDirectorType    = 'srsd',
  87.     kMTPlayerType                = 'sply',
  88.     kMTTransportType            = 'tran'
  89. };
  90.  
  91. /*-----------------------------------------
  92.     QuickTime Conferencing component subtypes
  93. -----------------------------------------*/
  94. enum {
  95.     kMTMovieTalkSubType            = 'mtlk',
  96.     kMTAOCESubType                = 'aoce',
  97.     kMTAppleTalkSubType            = 'atlk',
  98.     kMTTCPIPSubType                = 'tcpi',
  99.     kMTATMulticastSubType        = 'atmc',
  100.     kMTIPMulticastSubType        = 'ipmc',
  101.     kMTISDNSubType                = 'isdn'
  102. };
  103.  
  104. enum {
  105.     kMTGrabberSubType            = 'barg',
  106.     kMTPlayerSubType            = kMTPlayerType,
  107.     kMTMovieSubType                = MovieFileType,
  108.     kMTSoundSubType                = SoundMediaType,
  109.     kMTVideoSubType                = VideoMediaType
  110. };
  111.  
  112. /*-----------------------------------------
  113.     QuickTime Conferencing component flags
  114. -----------------------------------------*/
  115. enum {
  116.     kMTCanDoMulticastFlag        = 0x0000001,
  117.     kMTCanDoPointToPointFlag    = 0x0000002,
  118.     kMTCanDoIsochronousFlag        = 0x0000004,
  119.     kMTCanDoVariableRateFlag    = 0x0000008,
  120.     kMTNoNetworkComponentFlag    = 0x0000010
  121. };
  122.  
  123. /*-----------------------------------------
  124.     QuickTime Conferencing constants
  125. -----------------------------------------*/
  126. enum {
  127.     kMTVariableLengthArray        = 1
  128. };
  129.  
  130. /*-----------------------------------------
  131.     QuickTime Conferencing error codes
  132. -----------------------------------------*/
  133. enum {
  134.     mtKilledErr                    = -7741,
  135.     mtTimeoutErr                = -7742,
  136.     mtNoListenersErr            = -7743,
  137.     mtWrongVersionErr            = -7744,
  138.     mtModeErr                    = -7745,
  139.     mtNotDetachableErr            = -7746,
  140.     mtUnsupportedMessageErr        = -7747,
  141.     mtNoSNMPAgentErr            = -7748,
  142.     mtPendingAsyncCallErr        = -7860,
  143.     mtInvalidStreamIDErr        = -7869,
  144.     mtNoActiveStreamsErr        = -7873,
  145.     mtCodecsIncompatibleErr        = -7875,
  146.     mtNegotiationTimedOutErr    = -7876,
  147.     mtNegotiationInterruptedErr    = -7877,
  148.     mtNegotiationFailedErr        = -7878,
  149.     mtChunkIncompleteErr        = -7881,
  150.     mtChunkTimedOutErr            = -7883,
  151.     mtStreamDisabledErr            = -7884,
  152.     mtVoxSuppressedErr            = -7885,
  153.     mtRenegotiatedErr            = -7886,
  154.     mtConfigurationErr            = -7891,
  155.     mtUnsupportedNetworkErr        = -7892,
  156.     mtConnectionFailedErr        = -7895,
  157.     mtConnectionRefusedErr        = -7896,
  158.     mtNoTransportErr            = -7910,
  159.     mtIncompatibleStateErr        = -7962,
  160.     mtOutOfResourcesErr            = -7963,
  161.     mtOperationAbandonedErr        = -7964,
  162.     mtDuplicateNameErr            = -7971,
  163.     mtNameNotFoundErr            = -7972,
  164.     mtBadEndPointErr            = -7980,
  165.     mtInvalidDataLengthErr        = -7981,
  166.     mtMessageNotHandledErr        = -7990,
  167.     mtMediaNotHandledErr        = -7991,
  168.     mtInvalidMessageSizeErr        = -7992,
  169.     mtInvalidMessageTypeErr        = -7994,
  170.     mtInvalidAddressErr            = -7995,
  171.     mtNoMediaComponentErr        = -8000
  172. };
  173.  
  174. /*-----------------------------------------
  175.     QuickTime Conferencing typedefs
  176. -----------------------------------------*/
  177. typedef ComponentInstance MTTransportComponent;
  178.  
  179. typedef ComponentInstance MTNetworkComponent;
  180.  
  181. typedef ComponentInstance MTBrowserComponent;
  182.  
  183. typedef ComponentInstance MTDirectorComponent;
  184.  
  185. typedef ComponentInstance MTPlayerComponent;
  186.  
  187. typedef ComponentInstance MTFlowControlComponent;
  188.  
  189. typedef ComponentInstance MTRecorderComponent;
  190.  
  191. typedef ComponentInstance MTControllerComponent;
  192.  
  193. typedef ComponentInstance MTConferenceComponent;
  194.  
  195. typedef pascal void (*MTIdlerProcPtr)(long refcon);
  196.  
  197. #if GENERATINGCFM
  198. typedef UniversalProcPtr MTIdlerUPP;
  199. #else
  200. typedef MTIdlerProcPtr MTIdlerUPP;
  201. #endif
  202.  
  203. enum {
  204.     uppMTIdlerProcInfo = kPascalStackBased
  205.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  206. };
  207.  
  208. #if GENERATINGCFM
  209. #define NewMTIdlerProc(userRoutine)        \
  210.         (MTIdlerUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMTIdlerProcInfo, GetCurrentArchitecture())
  211. #else
  212. #define NewMTIdlerProc(userRoutine)        \
  213.         ((MTIdlerUPP) (userRoutine))
  214. #endif
  215.  
  216. #if GENERATINGCFM
  217. #define CallMTIdlerProc(userRoutine, refcon)        \
  218.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMTIdlerProcInfo, (refcon))
  219. #else
  220. #define CallMTIdlerProc(userRoutine, refcon)        \
  221.         (*(userRoutine))((refcon))
  222. #endif
  223.  
  224.  
  225. enum {
  226.     kMTIdlerGimmeTimeSelect        = 1
  227. };
  228.  
  229. /*-----------------------------------------
  230.     Idler prototypes
  231. -----------------------------------------*/
  232. extern pascal ComponentResult MTIdlerGimmeTime(ComponentInstance ic, long interval, MTIdlerUPP proc, long refcon)
  233.  FIVEWORDINLINE(0x2F3C, 12, 1, 0x7000, 0xA82A);
  234. /*-----------------------------------------
  235.     Memory call back functions
  236. -----------------------------------------*/
  237. typedef pascal long (*MTMemoryGZProcPtr)(long refcon, Size cbNeeded);
  238.  
  239. #if GENERATINGCFM
  240. typedef UniversalProcPtr MTMemoryGZUPP;
  241. #else
  242. typedef MTMemoryGZProcPtr MTMemoryGZUPP;
  243. #endif
  244.  
  245. enum {
  246.     uppMTMemoryGZProcInfo = kPascalStackBased
  247.          | RESULT_SIZE(SIZE_CODE(sizeof(long)))
  248.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  249.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Size)))
  250. };
  251.  
  252. #if GENERATINGCFM
  253. #define NewMTMemoryGZProc(userRoutine)        \
  254.         (MTMemoryGZUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMTMemoryGZProcInfo, GetCurrentArchitecture())
  255. #else
  256. #define NewMTMemoryGZProc(userRoutine)        \
  257.         ((MTMemoryGZUPP) (userRoutine))
  258. #endif
  259.  
  260. #if GENERATINGCFM
  261. #define CallMTMemoryGZProc(userRoutine, refcon, cbNeeded)        \
  262.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMTMemoryGZProcInfo, (refcon), (cbNeeded))
  263. #else
  264. #define CallMTMemoryGZProc(userRoutine, refcon, cbNeeded)        \
  265.         (*(userRoutine))((refcon), (cbNeeded))
  266. #endif
  267.  
  268.  
  269. #if !GENERATINGCFM
  270. #pragma parameter __D0 MTMemoryGetInstance(__A0)
  271. #endif
  272. extern pascal ComponentInstance MTMemoryGetInstance(Ptr chunk)
  273.  TWOWORDINLINE(0x2028, 0xFFFC);
  274. /*-----------------------------------------
  275.     Memory selectors
  276. -----------------------------------------*/
  277.  
  278. enum {
  279.     kMTMemoryInitSelect            = 1,
  280.     kMTMemoryGetOneChunkSelect    = 2,
  281.     kMTMemoryPutOneChunkSelect    = 3,
  282.     kMTMemorySetGrowZoneProcSelect = 4
  283. };
  284.  
  285. /*-----------------------------------------
  286.     Memory prototypes
  287. -----------------------------------------*/
  288. extern pascal ComponentResult MTMemoryInit(ComponentInstance mc, long extraBytes)
  289.  FIVEWORDINLINE(0x2F3C, 4, 1, 0x7000, 0xA82A);
  290. extern pascal Ptr MTMemoryGetOneChunk(ComponentInstance mc, long size, short memSafe)
  291.  FIVEWORDINLINE(0x2F3C, 6, 2, 0x7000, 0xA82A);
  292. extern pascal ComponentResult MTMemoryPutOneChunk(ComponentInstance mc, Ptr buffer)
  293.  FIVEWORDINLINE(0x2F3C, 4, 3, 0x7000, 0xA82A);
  294. extern pascal ComponentResult MTMemorySetGrowZoneProc(ComponentInstance mc, MTMemoryGZUPP proc, long refcon)
  295.  FIVEWORDINLINE(0x2F3C, 8, 4, 0x7000, 0xA82A);
  296. typedef OSType MTStandardID;
  297.  
  298. typedef UInt32 MTMessageSize;
  299.  
  300. struct MTMessageHeader {
  301.     MTStandardID                    msgType;                    /* standard identifier for each message */
  302.     MTMessageSize                    msgSize;                    /* size of entire message */
  303. };
  304. typedef struct MTMessageHeader MTMessageHeader, *MTMessagePtr;
  305.  
  306. /*-----------------------------------------
  307.     Transport event types
  308. -----------------------------------------*/
  309.  
  310. enum {
  311.     mtTransportFailEvent        = 0x0001,
  312.     mtTransportCloseEvent        = 0x0002,
  313.     mtTransportOfflineEvent        = 0x0004,
  314.     mtTransportOnlineEvent        = 0x0008
  315. };
  316.  
  317. typedef UInt32 MTTransportEventType;
  318.  
  319. /*-----------------------------------------
  320.     Transport call back functions
  321. -----------------------------------------*/
  322. typedef pascal OSErr (*MTMessageProcPtr)(MTMessageHeader *message, long refCon);
  323. typedef pascal OSErr (*MTMediaProcPtr)(struct MTStreamChunkRecord *chunk);
  324. typedef pascal void (*MTCompletionProcPtr)(ComponentResult err, long refCon);
  325. typedef pascal void (*MTNotificationProcPtr)(MTTransportComponent c, MTTransportEventType event, long refCon);
  326. typedef pascal void (*MTReleaseProcPtr)(struct MTStreamChunkRecord *chunk);
  327.  
  328. #if GENERATINGCFM
  329. typedef UniversalProcPtr MTMessageUPP;
  330. typedef UniversalProcPtr MTMediaUPP;
  331. typedef UniversalProcPtr MTCompletionUPP;
  332. typedef UniversalProcPtr MTNotificationUPP;
  333. typedef UniversalProcPtr MTReleaseUPP;
  334. #else
  335. typedef MTMessageProcPtr MTMessageUPP;
  336. typedef MTMediaProcPtr MTMediaUPP;
  337. typedef MTCompletionProcPtr MTCompletionUPP;
  338. typedef MTNotificationProcPtr MTNotificationUPP;
  339. typedef MTReleaseProcPtr MTReleaseUPP;
  340. #endif
  341.  
  342. enum {
  343.     uppMTMessageProcInfo = kPascalStackBased
  344.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  345.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(MTMessageHeader*)))
  346.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
  347.     uppMTMediaProcInfo = kPascalStackBased
  348.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  349.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(struct MTStreamChunkRecord*))),
  350.     uppMTCompletionProcInfo = kPascalStackBased
  351.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ComponentResult)))
  352.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
  353.     uppMTNotificationProcInfo = kPascalStackBased
  354.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(MTTransportComponent)))
  355.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(MTTransportEventType)))
  356.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
  357.     uppMTReleaseProcInfo = kPascalStackBased
  358.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(struct MTStreamChunkRecord*)))
  359. };
  360.  
  361. #if GENERATINGCFM
  362. #define NewMTMessageProc(userRoutine)        \
  363.         (MTMessageUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMTMessageProcInfo, GetCurrentArchitecture())
  364. #define NewMTMediaProc(userRoutine)        \
  365.         (MTMediaUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMTMediaProcInfo, GetCurrentArchitecture())
  366. #define NewMTCompletionProc(userRoutine)        \
  367.         (MTCompletionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMTCompletionProcInfo, GetCurrentArchitecture())
  368. #define NewMTNotificationProc(userRoutine)        \
  369.         (MTNotificationUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMTNotificationProcInfo, GetCurrentArchitecture())
  370. #define NewMTReleaseProc(userRoutine)        \
  371.         (MTReleaseUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMTReleaseProcInfo, GetCurrentArchitecture())
  372. #else
  373. #define NewMTMessageProc(userRoutine)        \
  374.         ((MTMessageUPP) (userRoutine))
  375. #define NewMTMediaProc(userRoutine)        \
  376.         ((MTMediaUPP) (userRoutine))
  377. #define NewMTCompletionProc(userRoutine)        \
  378.         ((MTCompletionUPP) (userRoutine))
  379. #define NewMTNotificationProc(userRoutine)        \
  380.         ((MTNotificationUPP) (userRoutine))
  381. #define NewMTReleaseProc(userRoutine)        \
  382.         ((MTReleaseUPP) (userRoutine))
  383. #endif
  384.  
  385. #if GENERATINGCFM
  386. #define CallMTMessageProc(userRoutine, message, refCon)        \
  387.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMTMessageProcInfo, (message), (refCon))
  388. #define CallMTMediaProc(userRoutine, chunk)        \
  389.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMTMediaProcInfo, (chunk))
  390. #define CallMTCompletionProc(userRoutine, err, refCon)        \
  391.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMTCompletionProcInfo, (err), (refCon))
  392. #define CallMTNotificationProc(userRoutine, c, event, refCon)        \
  393.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMTNotificationProcInfo, (c), (event), (refCon))
  394. #define CallMTReleaseProc(userRoutine, chunk)        \
  395.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMTReleaseProcInfo, (chunk))
  396. #else
  397. #define CallMTMessageProc(userRoutine, message, refCon)        \
  398.         (*(userRoutine))((message), (refCon))
  399. #define CallMTMediaProc(userRoutine, chunk)        \
  400.         (*(userRoutine))((chunk))
  401. #define CallMTCompletionProc(userRoutine, err, refCon)        \
  402.         (*(userRoutine))((err), (refCon))
  403. #define CallMTNotificationProc(userRoutine, c, event, refCon)        \
  404.         (*(userRoutine))((c), (event), (refCon))
  405. #define CallMTReleaseProc(userRoutine, chunk)        \
  406.         (*(userRoutine))((chunk))
  407. #endif
  408.  
  409. typedef UInt32 MTChunkSize;
  410.  
  411. typedef CompTimeValue MTChunkTime;
  412.  
  413. typedef OSType MTStreamType;
  414.  
  415. typedef UInt32 MTStreamReference;
  416.  
  417. typedef UInt16 MTStreamID;
  418.  
  419. typedef UInt32 MTStreamOptions;
  420.  
  421. typedef UInt32 MTStreamCount;
  422.  
  423. typedef UInt8 MTSequenceNum;
  424.  
  425. typedef UInt32 MTBitsPerSecond;
  426.  
  427. typedef UInt32 MTReservationID;
  428.  
  429. typedef UInt32 MTChannel;
  430.  
  431.  
  432. enum {
  433.     kMTAllStreams                = 0
  434. };
  435.  
  436. enum {
  437.     mtChunkPrioritySound        = 0x0800,
  438.     mtChunkPriorityMedium        = 0x0400,
  439.     mtChunkPriorityVideo        = 0x0100,
  440.     mtChunkPriorityKeyFrame        = 0x0001
  441. };
  442.  
  443. typedef UInt16 MTChunkPriority;
  444.  
  445. struct MTStreamChunkRecord {
  446.     Byte                            *chunkPtr;
  447.     MTChunkSize                        chunkSize;
  448.     MTChunkTime                        chunkTime;
  449.     MTChunkPriority                    chunkPriority;
  450.     MTStreamID                        chunkStreamID;
  451.     ComponentResult                    chunkError;
  452.     long                            chunkRefCon;
  453.     UInt32                            chunkReserved;
  454.     long                            chunkTimePlayed;
  455.     MTReleaseUPP                    chunkReleaseProcCallback;
  456.     long                            chunkPrivate;
  457.     MTStreamOptions                    chunkStreamOptions;
  458.     UInt8                            chunkReserved2;
  459.     MTSequenceNum                    chunkFrameNumber;
  460.     UInt16                            chunkReserved3;
  461. };
  462. typedef struct MTStreamChunkRecord MTStreamChunkRecord, *MTStreamChunkRecordPtr;
  463.  
  464. struct MTStreamPerformance {
  465.     UInt32                            numPacketsReceived;
  466.     UInt32                            numPacketsLost;
  467.     UInt32                            numPacketsSent;
  468.     UInt32                            numBytesReceived;
  469.     UInt32                            numBytesSent;
  470. };
  471. typedef struct MTStreamPerformance MTStreamPerformance;
  472.  
  473.  
  474. enum {
  475.     kMTReserveType                = 'mtrs'
  476. };
  477.  
  478. typedef OSType MTReserveType;
  479.  
  480. /*                                                                    Request set        Request get        Release set        Release get*/
  481. struct MTReservation {
  482.     MTReserveType                    flowSpecType;                /*  kMTReserveType    kMTReserveType    kMTReserveType    kMTReserveType*/
  483.     MTBitsPerSecond                    bandwidth;                    /*  requested        remaining        not used        remaining*/
  484.     MTReservationID                    identity;                    /*  not used        for Release        from Request    not used    */
  485.     MTChannel                        channel;                    /*    not used        for SendMedia    not used        not used*/
  486. };
  487. typedef struct MTReservation MTReservation, *MTReservationPtr;
  488.  
  489. /*-----------------------------------------
  490.     Transport name and address sizes
  491. -----------------------------------------*/
  492.  
  493. enum {
  494.     kMTMaxAddressSize            = 256,
  495.     kMTMaxNameSize                = 248,
  496.     kMTMaxEmailAddressSize        = 1832,                            /* should hold a PowerTalk packed MailRecipient */
  497.     kMTMaxDisplayNameSize        = 124
  498. };
  499.  
  500. /*-----------------------------------------
  501.     Transport independent address
  502. -----------------------------------------*/
  503. struct MTAddress {
  504.     OSType                            transportType;
  505.     OSType                            networkType;
  506.     Byte                            networkAddress[kMTMaxAddressSize];
  507. };
  508. typedef struct MTAddress MTAddress, *MTAddressPtr;
  509.  
  510. /*-----------------------------------------
  511.     Transport independent name
  512. -----------------------------------------*/
  513. struct MTName {
  514.     OSType                            transportType;
  515.     OSType                            networkType;
  516.     Byte                            networkName[248];            /*    kMTMaxNameSize (Interfacer warning fix!) */
  517.         struct {
  518.             short                            charSet;
  519.             short                            length;
  520.             Byte                            name[124];            /* kMTMaxDisplayNameSize (Interfacer warning fix!) */
  521.         }                            displayName;                /* in RString format */
  522.     Byte                            entityInfo[kMTMaxEmailAddressSize];
  523. };
  524. typedef struct MTName MTName, *MTNamePtr;
  525.  
  526. /*-----------------------------------------
  527.     Transport status types
  528. -----------------------------------------*/
  529.  
  530. enum {
  531.     mtTransportErrorStatus        = -2,
  532.     mtTransportFailedStatus        = -1,
  533.     mtTransportClosedStatus        = 0,
  534.     mtTransportOpenedStatus        = 1,
  535.     mtTransportCalledStatus        = 2,
  536.     mtTransportOpenPendingStatus = 3,
  537.     mtTransportListenPendingStatus = 4,
  538.     mtTransportAnswerPendingStatus = 5,
  539.     mtTransportClosePendingStatus = 6
  540. };
  541.  
  542. typedef SInt32 MTTransportStatusType;
  543.  
  544. /*-----------------------------------------
  545.     Transport/Network information
  546. -----------------------------------------*/
  547.  
  548. enum {
  549.     mtNetworkAttachedSelector    = 'ntwk',
  550.     mtPayloadSizeSelector        = 'pyld',
  551.     mtFlowBandwidthSelector        = 'fbps',
  552.     mtFlowControlSelector        = 'flow',
  553.     mtIsBidirectionalSelector    = 'bdir',
  554.     mtIsMulticastSelector        = 'mcst',
  555.     mtIsUnsegmentedSelector        = 'unsg',
  556.     mtHasReservationSelector    = 'resv',
  557.     mtControlSizeSelector        = 'csiz',
  558.     mtMediaSizeSelector            = 'msiz',
  559.     mtMulticastTypeSelector        = 'mtyp',
  560.     mtUnicastTypeSelector        = 'utyp'
  561. };
  562.  
  563. typedef OSType MTInfoSelector;
  564.  
  565. /*-----------------------------------------
  566.     Transport address types
  567. -----------------------------------------*/
  568.  
  569. enum {
  570.     mtTransportRemoteMediaAddress = 1,
  571.     mtTransportRemoteControlAddress = 2,
  572.     mtTransportLocalMediaAddress = 3,
  573.     mtTransportLocalControlAddress = 4,
  574.     mtTransportLocalListenerAddress = 5
  575. };
  576.  
  577. typedef SInt16 MTTransportAddressType;
  578.  
  579. /*-----------------------------------------
  580.     Transport selectors
  581. -----------------------------------------*/
  582.  
  583. enum {
  584.     kMTTransportListenSelect    = 1,
  585.     kMTTransportAnswerSelect    = 2,
  586.     kMTTransportCallSelect        = 3,
  587.     kMTTransportDisconnectSelect = 4,
  588.     kMTTransportSetNotificationProcSelect = 5,
  589.     kMTTransportGetNotificationProcSelect = 6,
  590.     kMTTransportSendMessageSelect = 7,
  591.     kMTTransportSendMediaDataSelect = 8,
  592.     kMTTransportSetMediaDataProcSelect = 9,
  593.     kMTTransportSetMessageProcSelect = 10,
  594.     kMTTransportGetMessageProcSelect = 11,
  595.     kMTTransportGetReleaseProcSelect = 12,
  596.     kMTTransportNewMediaStreamSelect = 13,
  597.     kMTTransportDisposeMediaStreamSelect = 14,
  598.     kMTTransportAttachMediaStreamSelect = 15,
  599.     kMTTransportEnableStreamSelect = 16,
  600.     kMTTransportIsStreamEnabledSelect = 17,
  601.     kMTTransportGetStreamPerformanceSelect = 18,
  602.     kMTTransportRegisterNameSelect = 19,
  603.     kMTTransportRemoveNameSelect = 20,
  604.     kMTTransportLookupNameSelect = 21,
  605.     kMTTransportGetLocalNameSelect = 22,
  606.     kMTTransportGetStatusSelect    = 23,
  607.     kMTTransportGetInfoSelect    = 24,
  608.     kMTTransportGetAddressSelect = 25
  609. };
  610.  
  611. /*-----------------------------------------
  612.     Transport prototypes
  613. -----------------------------------------*/
  614. /*-----------------------------------------
  615.     Transport call management
  616. -----------------------------------------*/
  617. extern pascal ComponentResult MTTransportListen(MTTransportComponent c, MTAddress *remoteAddr, Boolean async, MTCompletionUPP completion, long refCon)
  618.  FIVEWORDINLINE(0x2F3C, 14, 1, 0x7000, 0xA82A);
  619. extern pascal ComponentResult MTTransportAnswer(MTTransportComponent c, const MTAddress *remoteAddr, MTTransportComponent listener, Boolean async, MTCompletionUPP completion, long refCon)
  620.  FIVEWORDINLINE(0x2F3C, 18, 2, 0x7000, 0xA82A);
  621. extern pascal ComponentResult MTTransportCall(MTTransportComponent c, const MTAddress *remoteAddr, Boolean async, MTCompletionUPP completion, long refCon)
  622.  FIVEWORDINLINE(0x2F3C, 14, 3, 0x7000, 0xA82A);
  623. extern pascal ComponentResult MTTransportDisconnect(MTTransportComponent c, Boolean async, MTCompletionUPP completion, long refCon)
  624.  FIVEWORDINLINE(0x2F3C, 10, 4, 0x7000, 0xA82A);
  625. extern pascal ComponentResult MTTransportSetNotificationProc(MTTransportComponent c, MTNotificationUPP notify, long refCon)
  626.  FIVEWORDINLINE(0x2F3C, 8, 5, 0x7000, 0xA82A);
  627. extern pascal ComponentResult MTTransportGetNotificationProc(MTTransportComponent c, MTNotificationUPP *notify, long *refCon)
  628.  FIVEWORDINLINE(0x2F3C, 8, 6, 0x7000, 0xA82A);
  629. /*-----------------------------------------
  630.     Transport media and control data
  631. -----------------------------------------*/
  632. extern pascal ComponentResult MTTransportSendMessage(MTTransportComponent c, const MTMessageHeader *message, Boolean async, MTCompletionUPP completion, long refCon)
  633.  FIVEWORDINLINE(0x2F3C, 14, 7, 0x7000, 0xA82A);
  634. extern pascal ComponentResult MTTransportSendMediaData(MTTransportComponent c, const MTStreamChunkRecord *chunk, Boolean async, MTCompletionUPP completion, long refCon)
  635.  FIVEWORDINLINE(0x2F3C, 14, 8, 0x7000, 0xA82A);
  636. extern pascal ComponentResult MTTransportSetMediaDataProc(MTTransportComponent c, MTMediaUPP proc, long refCon)
  637.  FIVEWORDINLINE(0x2F3C, 8, 9, 0x7000, 0xA82A);
  638. extern pascal ComponentResult MTTransportSetMessageProc(MTTransportComponent c, MTMessageUPP proc, long refCon)
  639.  FIVEWORDINLINE(0x2F3C, 8, 10, 0x7000, 0xA82A);
  640. extern pascal ComponentResult MTTransportGetMessageProc(MTTransportComponent c, MTMessageUPP *proc, long *refCon)
  641.  FIVEWORDINLINE(0x2F3C, 8, 11, 0x7000, 0xA82A);
  642. extern pascal ComponentResult MTTransportGetReleaseProc(MTTransportComponent c, MTReleaseUPP *proc)
  643.  FIVEWORDINLINE(0x2F3C, 4, 12, 0x7000, 0xA82A);
  644. /*-----------------------------------------
  645.     Transport stream management
  646. -----------------------------------------*/
  647. extern pascal ComponentResult MTTransportNewMediaStream(MTTransportComponent c, MTStreamID *stream, Boolean enable, MTReservationPtr resources)
  648.  FIVEWORDINLINE(0x2F3C, 10, 13, 0x7000, 0xA82A);
  649. extern pascal ComponentResult MTTransportDisposeMediaStream(MTTransportComponent c, MTStreamID id)
  650.  FIVEWORDINLINE(0x2F3C, 2, 14, 0x7000, 0xA82A);
  651. extern pascal ComponentResult MTTransportAttachMediaStream(MTTransportComponent c, MTStreamID id, Boolean enable)
  652.  FIVEWORDINLINE(0x2F3C, 4, 15, 0x7000, 0xA82A);
  653. extern pascal ComponentResult MTTransportEnableStream(MTTransportComponent c, MTStreamID id, Boolean enable)
  654.  FIVEWORDINLINE(0x2F3C, 4, 16, 0x7000, 0xA82A);
  655. extern pascal ComponentResult MTTransportIsStreamEnabled(MTTransportComponent c, MTStreamID id, Boolean *enabled)
  656.  FIVEWORDINLINE(0x2F3C, 6, 17, 0x7000, 0xA82A);
  657. extern pascal ComponentResult MTTransportGetStreamPerformance(MTTransportComponent c, MTStreamID id, MTStreamPerformance *performance)
  658.  FIVEWORDINLINE(0x2F3C, 6, 18, 0x7000, 0xA82A);
  659. /*-----------------------------------------
  660.     Transport name services
  661. -----------------------------------------*/
  662. extern pascal ComponentResult MTTransportRegisterName(MTTransportComponent c, OSType networkType, ConstStr255Param name, ConstStr255Param serviceType, Boolean async, MTCompletionUPP completion, long refCon)
  663.  FIVEWORDINLINE(0x2F3C, 22, 19, 0x7000, 0xA82A);
  664. extern pascal ComponentResult MTTransportRemoveName(MTTransportComponent c, Boolean async, MTCompletionUPP completion, long refCon)
  665.  FIVEWORDINLINE(0x2F3C, 10, 20, 0x7000, 0xA82A);
  666. extern pascal ComponentResult MTTransportLookupName(MTTransportComponent c, const MTName *remoteName, MTAddress *remoteAddr, Boolean async, MTCompletionUPP completion, long refCon)
  667.  FIVEWORDINLINE(0x2F3C, 18, 21, 0x7000, 0xA82A);
  668. extern pascal ComponentResult MTTransportGetLocalName(MTTransportComponent c, MTName *localName)
  669.  FIVEWORDINLINE(0x2F3C, 4, 22, 0x7000, 0xA82A);
  670. /*-----------------------------------------
  671.     Transport information
  672. -----------------------------------------*/
  673. extern pascal ComponentResult MTTransportGetStatus(MTTransportComponent c, MTTransportStatusType *status)
  674.  FIVEWORDINLINE(0x2F3C, 4, 23, 0x7000, 0xA82A);
  675. extern pascal ComponentResult MTTransportGetInfo(MTTransportComponent c, MTInfoSelector whichInfo, long *result)
  676.  FIVEWORDINLINE(0x2F3C, 8, 24, 0x7000, 0xA82A);
  677. extern pascal ComponentResult MTTransportGetAddress(MTTransportComponent c, MTTransportAddressType addressType, MTAddress *address)
  678.  FIVEWORDINLINE(0x2F3C, 6, 25, 0x7000, 0xA82A);
  679. typedef UInt8 MTNetworkPriority;
  680.  
  681.  
  682. enum {
  683.     kMTRcvBlockStartMask        = 0x0001,
  684.     kMTRcvBlockCompleteMask        = 0x0002,
  685.     kMTRcvBlockGetBufferMask    = 0x0004,
  686.     kMTRcvBlockInterruptMask    = 0x0008
  687. };
  688.  
  689. typedef UInt32 MTRcvBlockFlags;
  690.  
  691. struct MTRcvBlock {
  692.     UInt32                            refcon;
  693.     UInt32                            size;
  694.     MTRcvBlockFlags                    flags;
  695.     ComponentResult                    error;
  696.     Byte                            *header;
  697.     Byte                            *buffer;
  698.     MTChannel                        channel;
  699. };
  700. typedef struct MTRcvBlock MTRcvBlock, *MTRcvBlockPtr;
  701.  
  702.  
  703. enum {
  704.     kMTOpenTransportType        = 1,                            /* pass straight through to open transport*/
  705.     kMTRequestReservationType    = 3,                            /* request resource reserveation*/
  706.     kMTReleaseReservationType    = 4                                /* release resource reserveation*/
  707. };
  708.  
  709. typedef UInt32 MTOptionType;
  710.  
  711. typedef UInt32 MTOptionFlags;
  712.  
  713. struct MTOptions {
  714.     OSType                            networkType;
  715.     MTOptionFlags                    flags;
  716.     UInt16                            maxlen;
  717.     UInt16                            length;
  718.     Byte                            *buffer;
  719. };
  720. typedef struct MTOptions MTOptions, *MTOptionsPtr;
  721.  
  722. struct MTBlock {
  723.     Byte                            *data;
  724.     UInt16                            maxLength;
  725.     UInt16                            length;
  726.     UInt16                            offset;
  727.     UInt16                            count;
  728. };
  729. typedef struct MTBlock MTBlock, *MTBlockPtr;
  730.  
  731. struct MTSegment {
  732.     struct MTSegment                *nextSegment;
  733.     MTBlockPtr                        thisBlock;
  734. };
  735. typedef struct MTSegment MTSegment, *MTSegmentPtr;
  736.  
  737.  
  738. enum {
  739.     mtBufferPendingMask            = 0x0001
  740. };
  741.  
  742. typedef UInt32 MTBufferFlags;
  743.  
  744. struct MTBuffer {
  745.     struct MTBuffer                    *nextBuffer;
  746.     MTSegmentPtr                    firstSegment;
  747.     MTBufferFlags                    flags;
  748.     ComponentResult                    error;
  749.     UInt8                            reserved1;
  750.     MTNetworkPriority                priority;
  751.     UInt16                            reserved2;
  752.     MTChannel                        channel;
  753.     UInt32                            reserved3;
  754.     UInt32                            reserved4;
  755. };
  756. typedef struct MTBuffer MTBuffer, *MTBufferPtr;
  757.  
  758.  
  759. enum {
  760.     kMTNetworkNullEvent            = 0x0000,
  761.     kMTNetworkFailEvent            = 0x0001,
  762.     kMTNetworkCloseEvent        = 0x0002,
  763.     kMTNetworkOfflineEvent        = 0x0004,
  764.     kMTNetworkOnlineEvent        = 0x0008
  765. };
  766.  
  767. typedef UInt32 MTNetworkEventType;
  768.  
  769. /*-----------------------------------------
  770.     Network call back functions
  771. -----------------------------------------*/
  772. /* The following function is not type pascal, it is called from low level code */
  773. typedef Byte *(*MTReceiveMediaProcPtr)(MTRcvBlock *rbp);
  774. typedef pascal void (*MTReceiveProcPtr)(const MTRcvBlock *rbp);
  775. typedef pascal void (*MTNotifyProcPtr)(MTNetworkEventType event, long refCon);
  776.  
  777. #if GENERATINGCFM
  778. typedef UniversalProcPtr MTReceiveMediaUPP;
  779. typedef UniversalProcPtr MTReceiveUPP;
  780. typedef UniversalProcPtr MTNotifyUPP;
  781. #else
  782. typedef MTReceiveMediaProcPtr MTReceiveMediaUPP;
  783. typedef MTReceiveProcPtr MTReceiveUPP;
  784. typedef MTNotifyProcPtr MTNotifyUPP;
  785. #endif
  786.  
  787. enum {
  788.     uppMTReceiveMediaProcInfo = kCStackBased
  789.          | RESULT_SIZE(SIZE_CODE(sizeof(Byte*)))
  790.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(MTRcvBlock*))),
  791.     uppMTReceiveProcInfo = kPascalStackBased
  792.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(MTRcvBlock*))),
  793.     uppMTNotifyProcInfo = kPascalStackBased
  794.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(MTNetworkEventType)))
  795.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  796. };
  797.  
  798. #if GENERATINGCFM
  799. #define NewMTReceiveMediaProc(userRoutine)        \
  800.         (MTReceiveMediaUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMTReceiveMediaProcInfo, GetCurrentArchitecture())
  801. #define NewMTReceiveProc(userRoutine)        \
  802.         (MTReceiveUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMTReceiveProcInfo, GetCurrentArchitecture())
  803. #define NewMTNotifyProc(userRoutine)        \
  804.         (MTNotifyUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMTNotifyProcInfo, GetCurrentArchitecture())
  805. #else
  806. #define NewMTReceiveMediaProc(userRoutine)        \
  807.         ((MTReceiveMediaUPP) (userRoutine))
  808. #define NewMTReceiveProc(userRoutine)        \
  809.         ((MTReceiveUPP) (userRoutine))
  810. #define NewMTNotifyProc(userRoutine)        \
  811.         ((MTNotifyUPP) (userRoutine))
  812. #endif
  813.  
  814. #if GENERATINGCFM
  815. #define CallMTReceiveMediaProc(userRoutine, rbp)        \
  816.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMTReceiveMediaProcInfo, (rbp))
  817. #define CallMTReceiveProc(userRoutine, rbp)        \
  818.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMTReceiveProcInfo, (rbp))
  819. #define CallMTNotifyProc(userRoutine, event, refCon)        \
  820.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMTNotifyProcInfo, (event), (refCon))
  821. #else
  822. #define CallMTReceiveMediaProc(userRoutine, rbp)        \
  823.         (*(userRoutine))((rbp))
  824. #define CallMTReceiveProc(userRoutine, rbp)        \
  825.         (*(userRoutine))((rbp))
  826. #define CallMTNotifyProc(userRoutine, event, refCon)        \
  827.         (*(userRoutine))((event), (refCon))
  828. #endif
  829.  
  830.  
  831. enum {
  832.     kMTNetworkGetInfoSelect        = 1,
  833.     kMTNetworkOptionsSelect        = 2,
  834.     kMTNetworkBindLocalMediaSelect = 3,
  835.     kMTNetworkUnbindLocalMediaSelect = 4,
  836.     kMTNetworkBindRemoteMediaSelect = 5,
  837.     kMTNetworkUnbindRemoteMediaSelect = 6,
  838.     kMTNetworkSendMediaSelect    = 7,
  839.     kMTNetworkSetReceiveMediaProcSelect = 8,
  840.     kMTNetworkBindListenerSelect = 9,
  841.     kMTNetworkUnbindListenerSelect = 10,
  842.     kMTNetworkBindCallerSelect    = 11,
  843.     kMTNetworkUnbindCallerSelect = 12,
  844.     kMTNetworkListenSelect        = 13,
  845.     kMTNetworkAcceptSelect        = 14,
  846.     kMTNetworkConnectSelect        = 15,
  847.     kMTNetworkDisconnectSelect    = 16,
  848.     kMTNetworkSendSelect        = 17,
  849.     kMTNetworkReceiveSelect        = 18,
  850.     kMTNetworkGetNextEventSelect = 19,
  851.     kMTNetworkSetNotifyProcSelect = 20,
  852.     kMTNetworkRegisterNameSelect = 21,
  853.     kMTNetworkRemoveNameSelect    = 22,
  854.     kMTNetworkLookupNameSelect    = 23,
  855.     kMTNetworkExtractNameSelect    = 24
  856. };
  857.  
  858. /*-----------------------------------------
  859.     Network prototypes
  860. -----------------------------------------*/
  861. extern pascal ComponentResult MTNetworkGetInfo(MTNetworkComponent nc, MTInfoSelector whichInfo, long *result)
  862.  FIVEWORDINLINE(0x2F3C, 8, 1, 0x7000, 0xA82A);
  863. extern pascal ComponentResult MTNetworkOptions(MTNetworkComponent nc, MTOptionType optionType, const MTOptions *setOpts, MTOptions *getOpts)
  864.  FIVEWORDINLINE(0x2F3C, 12, 2, 0x7000, 0xA82A);
  865. extern pascal ComponentResult MTNetworkBindLocalMedia(MTNetworkComponent nc, MTAddress *localAddr, Boolean async, MTCompletionUPP completion, long refCon)
  866.  FIVEWORDINLINE(0x2F3C, 14, 3, 0x7000, 0xA82A);
  867. extern pascal ComponentResult MTNetworkUnbindLocalMedia(MTNetworkComponent nc, Boolean async, MTCompletionUPP completion, long refCon)
  868.  FIVEWORDINLINE(0x2F3C, 10, 4, 0x7000, 0xA82A);
  869. extern pascal ComponentResult MTNetworkBindRemoteMedia(MTNetworkComponent nc, const MTAddress *remoteAddr, Boolean async, MTCompletionUPP completion, long refCon)
  870.  FIVEWORDINLINE(0x2F3C, 14, 5, 0x7000, 0xA82A);
  871. extern pascal ComponentResult MTNetworkUnbindRemoteMedia(MTNetworkComponent nc, Boolean async, MTCompletionUPP completion, long refCon)
  872.  FIVEWORDINLINE(0x2F3C, 10, 6, 0x7000, 0xA82A);
  873. extern pascal ComponentResult MTNetworkSendMedia(MTNetworkComponent nc, MTBuffer *buf, Boolean async, MTCompletionUPP completion, long refCon)
  874.  FIVEWORDINLINE(0x2F3C, 14, 7, 0x7000, 0xA82A);
  875. extern pascal ComponentResult MTNetworkSetReceiveMediaProc(MTNetworkComponent nc, MTReceiveMediaUPP receiveProc, long refCon, MTMessageSize headerSize)
  876.  FIVEWORDINLINE(0x2F3C, 12, 8, 0x7000, 0xA82A);
  877. extern pascal ComponentResult MTNetworkBindListener(MTNetworkComponent nc, MTAddress *localAddr, Boolean async, MTCompletionUPP completion, long refCon)
  878.  FIVEWORDINLINE(0x2F3C, 14, 9, 0x7000, 0xA82A);
  879. extern pascal ComponentResult MTNetworkUnbindListener(MTNetworkComponent nc, Boolean async, MTCompletionUPP completion, long refCon)
  880.  FIVEWORDINLINE(0x2F3C, 10, 10, 0x7000, 0xA82A);
  881. extern pascal ComponentResult MTNetworkBindCaller(MTNetworkComponent nc, MTAddress *localAddr, Boolean async, MTCompletionUPP completion, long refCon)
  882.  FIVEWORDINLINE(0x2F3C, 14, 11, 0x7000, 0xA82A);
  883. extern pascal ComponentResult MTNetworkUnbindCaller(MTNetworkComponent nc, Boolean async, MTCompletionUPP completion, long refCon)
  884.  FIVEWORDINLINE(0x2F3C, 10, 12, 0x7000, 0xA82A);
  885. extern pascal ComponentResult MTNetworkListen(MTNetworkComponent nc, MTAddress *remoteAddr, Boolean async, MTCompletionUPP completion, long refCon)
  886.  FIVEWORDINLINE(0x2F3C, 14, 13, 0x7000, 0xA82A);
  887. extern pascal ComponentResult MTNetworkAccept(MTNetworkComponent nc, const MTAddress *remoteAddr, MTNetworkComponent listener, Boolean async, MTCompletionUPP completion, long refCon)
  888.  FIVEWORDINLINE(0x2F3C, 18, 14, 0x7000, 0xA82A);
  889. extern pascal ComponentResult MTNetworkConnect(MTNetworkComponent nc, const MTAddress *remoteAddr, Boolean async, MTCompletionUPP completion, long refCon)
  890.  FIVEWORDINLINE(0x2F3C, 14, 15, 0x7000, 0xA82A);
  891. extern pascal ComponentResult MTNetworkDisconnect(MTNetworkComponent nc, Boolean async, MTCompletionUPP completion, long refCon)
  892.  FIVEWORDINLINE(0x2F3C, 10, 16, 0x7000, 0xA82A);
  893. extern pascal ComponentResult MTNetworkSend(MTNetworkComponent nc, MTBuffer *buf, Boolean async, MTCompletionUPP completion, long refCon)
  894.  FIVEWORDINLINE(0x2F3C, 14, 17, 0x7000, 0xA82A);
  895. extern pascal ComponentResult MTNetworkReceive(MTNetworkComponent nc, MTRcvBlock *receiveBlock, Boolean async, MTReceiveUPP receiveProc, long refCon)
  896.  FIVEWORDINLINE(0x2F3C, 14, 18, 0x7000, 0xA82A);
  897. extern pascal ComponentResult MTNetworkGetNextEvent(MTNetworkComponent nc, MTNetworkEventType *event, Boolean async, MTNotifyUPP completion, long refCon)
  898.  FIVEWORDINLINE(0x2F3C, 14, 19, 0x7000, 0xA82A);
  899. extern pascal ComponentResult MTNetworkSetNotifyProc(MTNetworkComponent nc, MTNotifyUPP notifyProc, long refCon)
  900.  FIVEWORDINLINE(0x2F3C, 8, 20, 0x7000, 0xA82A);
  901. extern pascal ComponentResult MTNetworkRegisterName(MTNetworkComponent nc, ConstStr255Param name, ConstStr255Param serviceType, MTName *localName, Boolean async, MTCompletionUPP completion, long refCon)
  902.  FIVEWORDINLINE(0x2F3C, 22, 21, 0x7000, 0xA82A);
  903. extern pascal ComponentResult MTNetworkRemoveName(MTNetworkComponent nc, Boolean async, MTCompletionUPP completion, long refCon)
  904.  FIVEWORDINLINE(0x2F3C, 10, 22, 0x7000, 0xA82A);
  905. extern pascal ComponentResult MTNetworkLookupName(MTNetworkComponent nc, const MTName *remoteName, Boolean async, MTCompletionUPP completion, long refCon)
  906.  FIVEWORDINLINE(0x2F3C, 14, 23, 0x7000, 0xA82A);
  907. extern pascal ComponentResult MTNetworkExtractName(MTNetworkComponent nc, MTAddress *remoteAddr)
  908.  FIVEWORDINLINE(0x2F3C, 4, 24, 0x7000, 0xA82A);
  909. typedef unsigned char *MTCString;
  910.  
  911. struct MTNameList {
  912.     UInt32                            count;
  913.     MTName                            list[kMTVariableLengthArray];
  914. };
  915. typedef struct MTNameList MTNameList, *MTNameListPtr;
  916.  
  917. /*-----------------------------------------
  918.     Browser constants
  919. -----------------------------------------*/
  920. /*
  921.  * browser item hit defines for modal dialog filter proc's
  922.  */
  923.  
  924. enum {
  925.     kMTBrowserCancelItem        = 1000,
  926.     kMTBrowserOKItem            = 1001,
  927.     kMTBrowserAddItem            = 1002
  928. };
  929.  
  930. enum {
  931.     kMTNativeBrowserFlag        = 0x0002,
  932.     kMTCanDoModalFlag            = 0x0004
  933. };
  934.  
  935. /*-----------------------------------------
  936.     Browser error codes
  937. -----------------------------------------*/
  938. /* 
  939.  * from Errors.h:
  940.  *         1. userCanceledErr - user hit cancel button (not really an error)
  941.  *        2. paramErr - invalid parameter(s)
  942.  *        3. resNotFound - error getting a resource
  943.  *        4. unimpErr - umimplemented function
  944.  * others:
  945.  *        1. memory errors from MemError()
  946.  *        2. if PowerTalk Browser: AOCE errors from OCEErrors.h
  947.  *        3. mtConfigurationErr: AppleTalk turned off (chooser browser)
  948.  */
  949. /*-----------------------------------------
  950.     Browser selectors
  951. -----------------------------------------*/
  952. enum {
  953.     kMTBrowserBrowseSelect        = 1,
  954.     kMTBrowserGetSettingsSelect    = 2,
  955.     kMTBrowserSetSettingsSelect    = 3
  956. };
  957.  
  958. /*-----------------------------------------
  959.     For modal browsers
  960. -----------------------------------------*/
  961. extern pascal ComponentResult MTBrowserBrowse(MTBrowserComponent browser, const Point *where, ConstStr255Param prompt, MTCString filterTypes, ModalFilterUPP proc, MTNameListPtr *nameList)
  962.  FIVEWORDINLINE(0x2F3C, 20, 1, 0x7000, 0xA82A);
  963. /*-----------------------------------------
  964.     For all types of browsers
  965. -----------------------------------------*/
  966. extern pascal ComponentResult MTBrowserGetSettings(MTBrowserComponent browser, Handle *prefs)
  967.  FIVEWORDINLINE(0x2F3C, 4, 2, 0x7000, 0xA82A);
  968. extern pascal ComponentResult MTBrowserSetSettings(MTBrowserComponent browser, Handle prefs)
  969.  FIVEWORDINLINE(0x2F3C, 4, 3, 0x7000, 0xA82A);
  970. struct MTStreamDescription {
  971.     MTStreamType                    streamType;
  972.     MTStreamID                        streamID;
  973.     MTStreamReference                streamReference;
  974.     TimeScale                        streamTimeScale;
  975.     SampleDescription                streamSampleDescription;
  976. };
  977. typedef struct MTStreamDescription MTStreamDescription, **MTStreamDescriptionHandle;
  978.  
  979.  
  980. enum {
  981.     streamHasBounds                = 0x00000001,
  982.     streamHasVolume                = 0x00000002,
  983.     streamHasDiscreteSamples    = 0x00000004,
  984.     streamIsInterruptCapable    = 0x00080000
  985. };
  986.  
  987. typedef UInt32 MTStreamInfo;
  988.  
  989. /* positive values indicates negotiation in progress actions */
  990. /* negative values indicates errors */
  991. /* zero value indicates negotiation completed */
  992.  
  993. enum {
  994.     kMTNegotiationCompleted        = 0,
  995.     kMTNegotiateOpenChannel        = 1,
  996.     kMTNegotiateOpenStream        = 2,
  997.     kMTNegotiateAckOpenStream    = 3
  998. };
  999.  
  1000. typedef ComponentResult MTNegotiateStateType;
  1001.  
  1002. /*-----------------------------------------
  1003.     Stream Director call back functions
  1004. -----------------------------------------*/
  1005. typedef pascal ComponentResult (*MTNegotiateProcPtr)(MTNegotiateStateType state, const MTMessageHeader *message, long refCon);
  1006.  
  1007. #if GENERATINGCFM
  1008. typedef UniversalProcPtr MTNegotiateUPP;
  1009. #else
  1010. typedef MTNegotiateProcPtr MTNegotiateUPP;
  1011. #endif
  1012.  
  1013. enum {
  1014.     uppMTNegotiateProcInfo = kPascalStackBased
  1015.          | RESULT_SIZE(SIZE_CODE(sizeof(ComponentResult)))
  1016.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(MTNegotiateStateType)))
  1017.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(MTMessageHeader*)))
  1018.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  1019. };
  1020.  
  1021. #if GENERATINGCFM
  1022. #define NewMTNegotiateProc(userRoutine)        \
  1023.         (MTNegotiateUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMTNegotiateProcInfo, GetCurrentArchitecture())
  1024. #else
  1025. #define NewMTNegotiateProc(userRoutine)        \
  1026.         ((MTNegotiateUPP) (userRoutine))
  1027. #endif
  1028.  
  1029. #if GENERATINGCFM
  1030. #define CallMTNegotiateProc(userRoutine, state, message, refCon)        \
  1031.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMTNegotiateProcInfo, (state), (message), (refCon))
  1032. #else
  1033. #define CallMTNegotiateProc(userRoutine, state, message, refCon)        \
  1034.         (*(userRoutine))((state), (message), (refCon))
  1035. #endif
  1036.  
  1037. /*-----------------------------------------
  1038.     Stream Director selectors
  1039. -----------------------------------------*/
  1040.  
  1041. enum {
  1042.     kMTDirectorConnectedSelect    = 1,
  1043.     kMTDirectorJoinSelect        = 2,
  1044.     kMTDirectorGetNumberOfStreamsSelect = 3,
  1045.     kMTDirectorGetNextStreamSelect = 4,
  1046.     kMTDirectorStreamEnableSelect = 5,
  1047.     kMTDirectorPauseSelect        = 6,
  1048.     kMTDirectorIsStreamEnabledSelect = 7,
  1049.     kMTDirectorSetNegotiateProcSelect = 8,
  1050.     kMTDirectorGetNegotiateProcSelect = 9,
  1051.     kMTDirectorChangedStreamFormatsSelect = 10,
  1052.     kMTDirectorSetTransportSelect = 11,
  1053.     kMTDirectorGetTransportSelect = 12,
  1054.     kMTDirectorGetStreamDescriptionSelect = 13,
  1055.     kMTDirectorUpdateSelect        = 14,
  1056.     kMTDirectorGetStreamInfoSelect = 15,
  1057.     kMTDirectorSetGWorldSelect    = 16,
  1058.     kMTDirectorSetMatrixSelect    = 17,
  1059.     kMTDirectorGetMatrixSelect    = 18,
  1060.     kMTDirectorSetClipSelect    = 19,
  1061.     kMTDirectorGetClipSelect    = 20,
  1062.     kMTDirectorGetBoxSelect        = 21,
  1063.     kMTDirectorSetFrameRateSelect = 22,
  1064.     kMTDirectorGetFrameRateSelect = 23,
  1065.     kMTDirectorSetMaxFrameRateSelect = 24,
  1066.     kMTDirectorGetMaxFrameRateSelect = 25,
  1067.     kMTDirectorSetRectSelect    = 26,
  1068.     kMTDirectorGetRectSelect    = 27,
  1069.     kMTDirectorGetPictureSelect    = 28,
  1070.     kMTDirectorSetVolumeSelect    = 29,
  1071.     kMTDirectorGetVolumeSelect    = 30,
  1072.     kMTDirectorSetGainSelect    = 31,
  1073.     kMTDirectorGetGainSelect    = 32,
  1074.     kMTDirectorSetSoundThresholdSelect = 33,
  1075.     kMTDirectorGetSoundThresholdSelect = 34,
  1076.     kMTDirectorGetMediaComponentSelect = 35,
  1077.     kMTDirectorSetMediaComponentSelect = 36,
  1078.     kMTDirectorGetSoundLevelSelect = 37,
  1079.     kMTDirectorChangedWindowSelect = 38,
  1080.     kMTDirectorSetRecordProcSelect = 39,
  1081.     kMTDirectorGetRecordProcSelect = 40
  1082. };
  1083.  
  1084. /*-----------------------------------------
  1085.     Stream Director prototypes
  1086. -----------------------------------------*/
  1087. /*-----------------------------------------
  1088.     Stream Director connection functions
  1089. -----------------------------------------*/
  1090. extern pascal ComponentResult MTDirectorConnected(MTDirectorComponent sdc, Boolean connected)
  1091.  FIVEWORDINLINE(0x2F3C, 2, 1, 0x7000, 0xA82A);
  1092. extern pascal ComponentResult MTDirectorJoin(MTDirectorComponent sdc, MTDirectorComponent other)
  1093.  FIVEWORDINLINE(0x2F3C, 4, 2, 0x7000, 0xA82A);
  1094. /*-----------------------------------------
  1095.     Stream Director stream functions
  1096. -----------------------------------------*/
  1097. extern pascal ComponentResult MTDirectorGetNumberOfStreams(MTDirectorComponent sdc, MTStreamCount *numStreams)
  1098.  FIVEWORDINLINE(0x2F3C, 4, 3, 0x7000, 0xA82A);
  1099. extern pascal ComponentResult MTDirectorGetNextStream(MTDirectorComponent sdc, MTStreamID *stream, MTStreamType *type)
  1100.  FIVEWORDINLINE(0x2F3C, 8, 4, 0x7000, 0xA82A);
  1101. extern pascal ComponentResult MTDirectorStreamEnable(MTDirectorComponent sdc, MTStreamID stream, Boolean enableMode)
  1102.  FIVEWORDINLINE(0x2F3C, 4, 5, 0x7000, 0xA82A);
  1103. extern pascal ComponentResult MTDirectorPause(MTDirectorComponent sdc, Boolean pauseMode)
  1104.  FIVEWORDINLINE(0x2F3C, 2, 6, 0x7000, 0xA82A);
  1105. extern pascal ComponentResult MTDirectorIsStreamEnabled(MTDirectorComponent sdc, MTStreamID stream, Boolean *enableMode)
  1106.  FIVEWORDINLINE(0x2F3C, 6, 7, 0x7000, 0xA82A);
  1107. /*-----------------------------------------
  1108.     Stream Director negotiation functions
  1109. -----------------------------------------*/
  1110. extern pascal ComponentResult MTDirectorSetNegotiateProc(MTDirectorComponent sdc, MTNegotiateUPP negotiate, long refCon)
  1111.  FIVEWORDINLINE(0x2F3C, 8, 8, 0x7000, 0xA82A);
  1112. extern pascal ComponentResult MTDirectorGetNegotiateProc(MTDirectorComponent sdc, MTNegotiateUPP *negotiate, long *refCon)
  1113.  FIVEWORDINLINE(0x2F3C, 8, 9, 0x7000, 0xA82A);
  1114. extern pascal ComponentResult MTDirectorChangedStreamFormats(MTDirectorComponent sdc, Boolean finished)
  1115.  FIVEWORDINLINE(0x2F3C, 2, 10, 0x7000, 0xA82A);
  1116. /*-----------------------------------------
  1117.     Stream Director attach functions
  1118. -----------------------------------------*/
  1119. extern pascal ComponentResult MTDirectorSetTransport(MTDirectorComponent sdc, MTTransportComponent tc)
  1120.  FIVEWORDINLINE(0x2F3C, 4, 11, 0x7000, 0xA82A);
  1121. extern pascal ComponentResult MTDirectorGetTransport(MTDirectorComponent sdc, MTTransportComponent *tc)
  1122.  FIVEWORDINLINE(0x2F3C, 4, 12, 0x7000, 0xA82A);
  1123. /*-----------------------------------------
  1124.     Stream Director info functions
  1125. -----------------------------------------*/
  1126. extern pascal ComponentResult MTDirectorGetStreamDescription(MTDirectorComponent sdc, MTStreamID stream, MTStreamDescriptionHandle streamDesc)
  1127.  FIVEWORDINLINE(0x2F3C, 6, 13, 0x7000, 0xA82A);
  1128. extern pascal ComponentResult MTDirectorUpdate(MTDirectorComponent sdc, RgnHandle updateRgn)
  1129.  FIVEWORDINLINE(0x2F3C, 4, 14, 0x7000, 0xA82A);
  1130. extern pascal ComponentResult MTDirectorGetStreamInfo(MTDirectorComponent sdc, MTStreamID stream, MTStreamInfo *info)
  1131.  FIVEWORDINLINE(0x2F3C, 6, 15, 0x7000, 0xA82A);
  1132. /*-----------------------------------------
  1133.     Stream Director video functions
  1134. -----------------------------------------*/
  1135. extern pascal ComponentResult MTDirectorSetGWorld(MTDirectorComponent sdc, MTStreamID stream, CGrafPtr gp, GDHandle gd)
  1136.  FIVEWORDINLINE(0x2F3C, 10, 16, 0x7000, 0xA82A);
  1137. extern pascal ComponentResult MTDirectorSetMatrix(MTDirectorComponent sdc, MTStreamID stream, const MatrixRecord *m)
  1138.  FIVEWORDINLINE(0x2F3C, 6, 17, 0x7000, 0xA82A);
  1139. extern pascal ComponentResult MTDirectorGetMatrix(MTDirectorComponent sdc, MTStreamID stream, MatrixRecord *m)
  1140.  FIVEWORDINLINE(0x2F3C, 6, 18, 0x7000, 0xA82A);
  1141. extern pascal ComponentResult MTDirectorSetClip(MTDirectorComponent sdc, MTStreamID stream, RgnHandle theClip)
  1142.  FIVEWORDINLINE(0x2F3C, 6, 19, 0x7000, 0xA82A);
  1143. extern pascal ComponentResult MTDirectorGetClip(MTDirectorComponent sdc, MTStreamID stream, RgnHandle *theClip)
  1144.  FIVEWORDINLINE(0x2F3C, 6, 20, 0x7000, 0xA82A);
  1145. extern pascal ComponentResult MTDirectorGetBox(MTDirectorComponent sdc, Rect *box)
  1146.  FIVEWORDINLINE(0x2F3C, 4, 21, 0x7000, 0xA82A);
  1147. extern pascal ComponentResult MTDirectorSetFrameRate(MTDirectorComponent sdc, MTStreamID stream, Fixed frameRate)
  1148.  FIVEWORDINLINE(0x2F3C, 6, 22, 0x7000, 0xA82A);
  1149. extern pascal ComponentResult MTDirectorGetFrameRate(MTDirectorComponent sdc, MTStreamID stream, Fixed *frameRate)
  1150.  FIVEWORDINLINE(0x2F3C, 6, 23, 0x7000, 0xA82A);
  1151. extern pascal ComponentResult MTDirectorSetMaxFrameRate(MTDirectorComponent sdc, MTStreamID stream, Fixed frameRate)
  1152.  FIVEWORDINLINE(0x2F3C, 6, 24, 0x7000, 0xA82A);
  1153. extern pascal ComponentResult MTDirectorGetMaxFrameRate(MTDirectorComponent sdc, MTStreamID stream, Fixed *frameRate)
  1154.  FIVEWORDINLINE(0x2F3C, 6, 25, 0x7000, 0xA82A);
  1155. extern pascal ComponentResult MTDirectorSetRect(MTDirectorComponent sdc, MTStreamID stream, const Rect *r)
  1156.  FIVEWORDINLINE(0x2F3C, 6, 26, 0x7000, 0xA82A);
  1157. extern pascal ComponentResult MTDirectorGetRect(MTDirectorComponent sdc, MTStreamID stream, Rect *r)
  1158.  FIVEWORDINLINE(0x2F3C, 6, 27, 0x7000, 0xA82A);
  1159. extern pascal ComponentResult MTDirectorGetPicture(MTDirectorComponent sdc, MTStreamID stream, PicHandle *p, const Rect *bounds, short offscreenDepth, long grabPictFlags)
  1160.  FIVEWORDINLINE(0x2F3C, 16, 28, 0x7000, 0xA82A);
  1161. /*-----------------------------------------
  1162.     Stream Director sound functions
  1163. -----------------------------------------*/
  1164. extern pascal ComponentResult MTDirectorSetVolume(MTDirectorComponent sdc, MTStreamID stream, short volume)
  1165.  FIVEWORDINLINE(0x2F3C, 4, 29, 0x7000, 0xA82A);
  1166. extern pascal ComponentResult MTDirectorGetVolume(MTDirectorComponent sdc, MTStreamID stream, short *volume)
  1167.  FIVEWORDINLINE(0x2F3C, 6, 30, 0x7000, 0xA82A);
  1168. extern pascal ComponentResult MTDirectorSetGain(MTDirectorComponent sdc, MTStreamID stream, short gain)
  1169.  FIVEWORDINLINE(0x2F3C, 4, 31, 0x7000, 0xA82A);
  1170. extern pascal ComponentResult MTDirectorGetGain(MTDirectorComponent sdc, MTStreamID stream, short *gain)
  1171.  FIVEWORDINLINE(0x2F3C, 6, 32, 0x7000, 0xA82A);
  1172. extern pascal ComponentResult MTDirectorSetSoundThreshold(MTDirectorComponent sdc, MTStreamID stream, short threshold)
  1173.  FIVEWORDINLINE(0x2F3C, 4, 33, 0x7000, 0xA82A);
  1174. extern pascal ComponentResult MTDirectorGetSoundThreshold(MTDirectorComponent sdc, MTStreamID stream, short *threshold)
  1175.  FIVEWORDINLINE(0x2F3C, 6, 34, 0x7000, 0xA82A);
  1176. extern pascal ComponentResult MTDirectorGetMediaComponent(MTDirectorComponent sdc, ComponentInstance *media, OSType *type, OSType *subtype)
  1177.  FIVEWORDINLINE(0x2F3C, 12, 35, 0x7000, 0xA82A);
  1178. extern pascal ComponentResult MTDirectorSetMediaComponent(MTDirectorComponent sdc, ComponentInstance media)
  1179.  FIVEWORDINLINE(0x2F3C, 4, 36, 0x7000, 0xA82A);
  1180. extern pascal ComponentResult MTDirectorGetSoundLevel(MTDirectorComponent sdc, MTStreamID stream, short *meterlevel)
  1181.  FIVEWORDINLINE(0x2F3C, 6, 37, 0x7000, 0xA82A);
  1182. /*-----------------------------------------
  1183.     Stream Director windowing functions
  1184. -----------------------------------------*/
  1185. extern pascal ComponentResult MTDirectorChangedWindow(MTDirectorComponent sdc, Boolean changedWindow)
  1186.  FIVEWORDINLINE(0x2F3C, 2, 38, 0x7000, 0xA82A);
  1187. /*-----------------------------------------
  1188.     Stream Director recording functions
  1189. -----------------------------------------*/
  1190. extern pascal ComponentResult MTDirectorSetRecordProc(MTDirectorComponent sdc, MTMediaUPP proc, long refCon)
  1191.  FIVEWORDINLINE(0x2F3C, 8, 39, 0x7000, 0xA82A);
  1192. extern pascal ComponentResult MTDirectorGetRecordProc(MTDirectorComponent sdc, MTMediaUPP *proc, long *refCon)
  1193.  FIVEWORDINLINE(0x2F3C, 8, 40, 0x7000, 0xA82A);
  1194.  
  1195. enum {
  1196.     kMTDisplayUpdateHintMask    = 0x00000001
  1197. };
  1198.  
  1199. typedef long MTPlayerHintFlags;
  1200.  
  1201. /*-----------------------------------------
  1202.     Stream player selectors
  1203. -----------------------------------------*/
  1204.  
  1205. enum {
  1206.     kMTPlayerInitSelect            = 1,
  1207.     kMTPlayerGetStreamDescriptionSelect = 2,
  1208.     kMTPlayerGetPlayerInfoSelect = 3,
  1209.     kMTPlayerPlayStreamSelect    = 4,
  1210.     kMTPlayerSetStreamTimeBaseSelect = 5,
  1211.     kMTPlayerGetStreamTimeBaseSelect = 6,
  1212.     kMTPlayerEnableSelect        = 7,
  1213.     kMTPlayerIsEnabledSelect    = 8,
  1214.     kMTPlayerSetGWorldSelect    = 9,
  1215.     kMTPlayerSetClipSelect        = 10,
  1216.     kMTPlayerGetClipSelect        = 11,
  1217.     kMTPlayerSetRectSelect        = 12,
  1218.     kMTPlayerGetRectSelect        = 13,
  1219.     kMTPlayerSetMatrixSelect    = 14,
  1220.     kMTPlayerGetMatrixSelect    = 15,
  1221.     kMTPlayerGetPictureSelect    = 16,
  1222.     kMTPlayerSetVolumeSelect    = 17,
  1223.     kMTPlayerGetVolumeSelect    = 18,
  1224.     kMTPlayerSetSoundBalanceSelect = 19,
  1225.     kMTPlayerGetSoundBalanceSelect = 20,
  1226.     kMTPlayerSetDimensionsSelect = 21,
  1227.     kMTPlayerGetDimensionsSelect = 22,
  1228.     kMTPlayerGetSrcRgnSelect    = 23,
  1229.     kMTPlayerSamplesPerSecondSelect = 24,
  1230.     kMTPlayerSetDisplayHintsSelect = 25
  1231. };
  1232.  
  1233. /*-----------------------------------------
  1234.     Stream player prototypes
  1235. -----------------------------------------*/
  1236. extern pascal ComponentResult MTPlayerInit(MTPlayerComponent spc, MTStreamDescriptionHandle description, MTReleaseUPP proc)
  1237.  FIVEWORDINLINE(0x2F3C, 8, 1, 0x7000, 0xA82A);
  1238. extern pascal ComponentResult MTPlayerGetStreamDescription(MTPlayerComponent spc, MTStreamDescriptionHandle streamDesc)
  1239.  FIVEWORDINLINE(0x2F3C, 4, 2, 0x7000, 0xA82A);
  1240. extern pascal ComponentResult MTPlayerGetPlayerInfo(MTPlayerComponent spc, MTStreamInfo *playerFlags)
  1241.  FIVEWORDINLINE(0x2F3C, 4, 3, 0x7000, 0xA82A);
  1242. extern pascal ComponentResult MTPlayerPlayStream(MTPlayerComponent spc, MTStreamChunkRecord *chunk)
  1243.  FIVEWORDINLINE(0x2F3C, 4, 4, 0x7000, 0xA82A);
  1244. extern pascal ComponentResult MTPlayerSetStreamTimeBase(MTPlayerComponent spc, TimeBase timebase)
  1245.  FIVEWORDINLINE(0x2F3C, 4, 5, 0x7000, 0xA82A);
  1246. extern pascal ComponentResult MTPlayerGetStreamTimeBase(MTPlayerComponent spc, TimeBase *timebase)
  1247.  FIVEWORDINLINE(0x2F3C, 4, 6, 0x7000, 0xA82A);
  1248. extern pascal ComponentResult MTPlayerEnable(MTPlayerComponent spc, Boolean enableMode)
  1249.  FIVEWORDINLINE(0x2F3C, 2, 7, 0x7000, 0xA82A);
  1250. extern pascal ComponentResult MTPlayerIsEnabled(MTPlayerComponent spc, Boolean *enableMode)
  1251.  FIVEWORDINLINE(0x2F3C, 4, 8, 0x7000, 0xA82A);
  1252. /*-----------------------------------------
  1253.     Stream player video functions
  1254. -----------------------------------------*/
  1255. extern pascal ComponentResult MTPlayerSetGWorld(MTPlayerComponent spc, CGrafPtr gp, GDHandle gd)
  1256.  FIVEWORDINLINE(0x2F3C, 8, 9, 0x7000, 0xA82A);
  1257. extern pascal ComponentResult MTPlayerSetClip(MTPlayerComponent spc, RgnHandle theClip)
  1258.  FIVEWORDINLINE(0x2F3C, 4, 10, 0x7000, 0xA82A);
  1259. extern pascal ComponentResult MTPlayerGetClip(MTPlayerComponent spc, RgnHandle *theClip)
  1260.  FIVEWORDINLINE(0x2F3C, 4, 11, 0x7000, 0xA82A);
  1261. extern pascal ComponentResult MTPlayerSetRect(MTPlayerComponent spc, const Rect *r)
  1262.  FIVEWORDINLINE(0x2F3C, 4, 12, 0x7000, 0xA82A);
  1263. extern pascal ComponentResult MTPlayerGetRect(MTPlayerComponent spc, Rect *r)
  1264.  FIVEWORDINLINE(0x2F3C, 4, 13, 0x7000, 0xA82A);
  1265. extern pascal ComponentResult MTPlayerSetMatrix(MTPlayerComponent spc, const MatrixRecord *m)
  1266.  FIVEWORDINLINE(0x2F3C, 4, 14, 0x7000, 0xA82A);
  1267. extern pascal ComponentResult MTPlayerGetMatrix(MTPlayerComponent spc, MatrixRecord *m)
  1268.  FIVEWORDINLINE(0x2F3C, 4, 15, 0x7000, 0xA82A);
  1269. extern pascal ComponentResult MTPlayerGetPicture(MTPlayerComponent spc, PicHandle *p, const Rect *bounds, short offscreenDepth, long grabPictFlags)
  1270.  FIVEWORDINLINE(0x2F3C, 14, 16, 0x7000, 0xA82A);
  1271. /*-----------------------------------------
  1272.     Stream player sound functions
  1273. -----------------------------------------*/
  1274. extern pascal ComponentResult MTPlayerSetVolume(MTPlayerComponent spc, short volume)
  1275.  FIVEWORDINLINE(0x2F3C, 2, 17, 0x7000, 0xA82A);
  1276. extern pascal ComponentResult MTPlayerGetVolume(MTPlayerComponent spc, short *volume)
  1277.  FIVEWORDINLINE(0x2F3C, 4, 18, 0x7000, 0xA82A);
  1278. extern pascal ComponentResult MTPlayerSetSoundBalance(MTPlayerComponent spc, short balance)
  1279.  FIVEWORDINLINE(0x2F3C, 4, 19, 0x7000, 0xA82A);
  1280. extern pascal ComponentResult MTPlayerGetSoundBalance(MTPlayerComponent spc, short *balance)
  1281.  FIVEWORDINLINE(0x2F3C, 2, 20, 0x7000, 0xA82A);
  1282. extern pascal ComponentResult MTPlayerSetDimensions(MTPlayerComponent spc, Fixed width, Fixed height)
  1283.  FIVEWORDINLINE(0x2F3C, 8, 21, 0x7000, 0xA82A);
  1284. extern pascal ComponentResult MTPlayerGetDimensions(MTPlayerComponent spc, Fixed *width, Fixed *height)
  1285.  FIVEWORDINLINE(0x2F3C, 8, 22, 0x7000, 0xA82A);
  1286. extern pascal ComponentResult MTPlayerGetSrcRgn(MTPlayerComponent spc, RgnHandle srcRgn, TimeValue requestTime)
  1287.  FIVEWORDINLINE(0x2F3C, 8, 23, 0x7000, 0xA82A);
  1288. extern pascal ComponentResult MTPlayerSamplesPerSecond(MTPlayerComponent spc, Fixed *samplesPerSecond)
  1289.  FIVEWORDINLINE(0x2F3C, 4, 24, 0x7000, 0xA82A);
  1290. extern pascal ComponentResult MTPlayerSetDisplayHints(MTPlayerComponent spc, MTPlayerHintFlags flags)
  1291.  FIVEWORDINLINE(0x2F3C, 4, 25, 0x7000, 0xA82A);
  1292.  
  1293. enum {
  1294.     kMTFlowControlReceiver        = 1,
  1295.     kMTFlowControlSender        = 2
  1296. };
  1297.  
  1298. typedef short MTFlowControlType;
  1299.  
  1300. /*-----------------------------------------
  1301.     Flow control selectors
  1302. -----------------------------------------*/
  1303.  
  1304. enum {
  1305.     kMTFlowControlInitSelect    = 1,
  1306.     kMTFlowControlEnableSelect    = 2,
  1307.     kMTFlowControlIsEnabledSelect = 3,
  1308.     kMTFlowControlAttachTransportSelect = 4,
  1309.     kMTFlowControlAttachPlayerSelect = 5,
  1310.     kMTFlowControlRcvrProcSelect = 6,
  1311.     kMTFlowControlSndrProcSelect = 7,
  1312.     kMTFlowControlSlowDownSelect = 8,
  1313.     kMTFlowControlSpeedUpSelect    = 9,
  1314.     kMTFlowControlSetVOXThresholdSelect = 10,
  1315.     kMTFlowControlGetVOXThresholdSelect = 11,
  1316.     kMTFlowControlJoinSelect    = 12
  1317. };
  1318.  
  1319. /*-----------------------------------------
  1320.     Flow control prototypes
  1321. -----------------------------------------*/
  1322. extern pascal ComponentResult MTFlowControlInit(MTFlowControlComponent fcc, MTFlowControlType flowType, MTDirectorComponent owner, MTStreamDescriptionHandle description)
  1323.  FIVEWORDINLINE(0x2F3C, 10, 1, 0x7000, 0xA82A);
  1324. extern pascal ComponentResult MTFlowControlEnable(MTFlowControlComponent fcc, Boolean enableMode)
  1325.  FIVEWORDINLINE(0x2F3C, 2, 2, 0x7000, 0xA82A);
  1326. extern pascal ComponentResult MTFlowControlIsEnabled(MTFlowControlComponent fcc, Boolean *enableMode)
  1327.  FIVEWORDINLINE(0x2F3C, 4, 3, 0x7000, 0xA82A);
  1328. extern pascal ComponentResult MTFlowControlAttachTransport(MTFlowControlComponent fcc, MTTransportComponent tc)
  1329.  FIVEWORDINLINE(0x2F3C, 4, 4, 0x7000, 0xA82A);
  1330. extern pascal ComponentResult MTFlowControlAttachPlayer(MTFlowControlComponent fcc, MTPlayerComponent spc)
  1331.  FIVEWORDINLINE(0x2F3C, 4, 5, 0x7000, 0xA82A);
  1332. extern pascal ComponentResult MTFlowControlRcvrProc(MTFlowControlComponent fcc, MTStreamChunkRecord *chunk)
  1333.  FIVEWORDINLINE(0x2F3C, 4, 6, 0x7000, 0xA82A);
  1334. extern pascal ComponentResult MTFlowControlSndrProc(MTFlowControlComponent fcc, const MTStreamChunkRecord *chunk, Boolean async, MTCompletionUPP completion, long refCon)
  1335.  FIVEWORDINLINE(0x2F3C, 14, 7, 0x7000, 0xA82A);
  1336. extern pascal ComponentResult MTFlowControlSlowDown(MTFlowControlComponent fcc)
  1337.  FIVEWORDINLINE(0x2F3C, 0, 8, 0x7000, 0xA82A);
  1338. extern pascal ComponentResult MTFlowControlSpeedUp(MTFlowControlComponent fcc)
  1339.  FIVEWORDINLINE(0x2F3C, 0, 9, 0x7000, 0xA82A);
  1340. extern pascal ComponentResult MTFlowControlSetVOXThreshold(MTFlowControlComponent fcc, short threshold)
  1341.  FIVEWORDINLINE(0x2F3C, 2, 10, 0x7000, 0xA82A);
  1342. extern pascal ComponentResult MTFlowControlGetVOXThreshold(MTFlowControlComponent fcc, short *threshold)
  1343.  FIVEWORDINLINE(0x2F3C, 4, 11, 0x7000, 0xA82A);
  1344. extern pascal ComponentResult MTFlowControlJoin(MTFlowControlComponent fcc, MTFlowControlComponent otherfcc)
  1345.  FIVEWORDINLINE(0x2F3C, 4, 12, 0x7000, 0xA82A);
  1346.  
  1347. enum {
  1348.     kMTRecorderAddSourceSelect    = 1,
  1349.     kMTRecorderDeleteSourceSelect = 2,
  1350.     kMTRecorderGetNextSourceSelect = 3,
  1351.     kMTRecorderSetDataOutputSelect = 4,
  1352.     kMTRecorderGetDataOutputSelect = 5,
  1353.     kMTRecorderStartRecordSelect = 6,
  1354.     kMTRecorderStopRecordSelect    = 7,
  1355.     kMTRecorderPauseSelect        = 8,
  1356.     kMTRecorderGetPauseSelect    = 9,
  1357.     kMTRecorderChangedStreamsSelect = 10,
  1358.     kMTRecorderGetMovieSelect    = 11,
  1359.     kMTRecorderSetMaximumRecordTimeSelect = 12,
  1360.     kMTRecorderGetMaximumRecordTimeSelect = 13,
  1361.     kMTRecorderGetStorageSpaceRemainingSelect = 14,
  1362.     kMTRecorderGetTimeRemainingSelect = 15,
  1363.     kMTRecorderGetLastMovieResIDSelect = 16
  1364. };
  1365.  
  1366. /*-----------------------------------------
  1367.     Recorder prototypes
  1368. -----------------------------------------*/
  1369. /*-----------------------------------------
  1370.     Recorder setup functions
  1371. -----------------------------------------*/
  1372. extern pascal ComponentResult MTRecorderAddSource(MTRecorderComponent rc, MTDirectorComponent sourceInstance)
  1373.  FIVEWORDINLINE(0x2F3C, 4, 1, 0x7000, 0xA82A);
  1374. extern pascal ComponentResult MTRecorderDeleteSource(MTRecorderComponent rc, MTDirectorComponent sourceInstance)
  1375.  FIVEWORDINLINE(0x2F3C, 4, 2, 0x7000, 0xA82A);
  1376. extern pascal ComponentResult MTRecorderGetNextSource(MTRecorderComponent rc, MTDirectorComponent *sourceInstance)
  1377.  FIVEWORDINLINE(0x2F3C, 4, 3, 0x7000, 0xA82A);
  1378. extern pascal ComponentResult MTRecorderSetDataOutput(MTRecorderComponent rc, const FSSpec *movieFile, long whereFlags)
  1379.  FIVEWORDINLINE(0x2F3C, 0x8, 4, 0x7000, 0xA82A);
  1380. extern pascal ComponentResult MTRecorderGetDataOutput(MTRecorderComponent rc, FSSpec *movieFile, long *whereFlags)
  1381.  FIVEWORDINLINE(0x2F3C, 0x8, 5, 0x7000, 0xA82A);
  1382. /*-----------------------------------------
  1383.     Recorder control functions
  1384. -----------------------------------------*/
  1385. extern pascal ComponentResult MTRecorderStartRecord(MTRecorderComponent rc)
  1386.  FIVEWORDINLINE(0x2F3C, 0, 6, 0x7000, 0xA82A);
  1387. extern pascal ComponentResult MTRecorderStopRecord(MTRecorderComponent rc)
  1388.  FIVEWORDINLINE(0x2F3C, 0, 7, 0x7000, 0xA82A);
  1389. extern pascal ComponentResult MTRecorderPause(MTRecorderComponent rc, Boolean pause)
  1390.  FIVEWORDINLINE(0x2F3C, 0x2, 8, 0x7000, 0xA82A);
  1391. extern pascal ComponentResult MTRecorderGetPause(MTRecorderComponent rc, Boolean *paused)
  1392.  FIVEWORDINLINE(0x2F3C, 0x4, 9, 0x7000, 0xA82A);
  1393. extern pascal ComponentResult MTRecorderChangedStreams(MTRecorderComponent rc, MTDirectorComponent sourceInstance)
  1394.  FIVEWORDINLINE(0x2F3C, 4, 10, 0x7000, 0xA82A);
  1395. /*-----------------------------------------
  1396.     Recorder info functions
  1397. -----------------------------------------*/
  1398. extern pascal Movie MTRecorderGetMovie(MTRecorderComponent rc)
  1399.  FIVEWORDINLINE(0x2F3C, 0, 11, 0x7000, 0xA82A);
  1400. extern pascal ComponentResult MTRecorderSetMaximumRecordTime(MTRecorderComponent rc, UInt32 ticks)
  1401.  FIVEWORDINLINE(0x2F3C, 0x4, 12, 0x7000, 0xA82A);
  1402. extern pascal ComponentResult MTRecorderGetMaximumRecordTime(MTRecorderComponent rc, UInt32 *ticks)
  1403.  FIVEWORDINLINE(0x2F3C, 0x4, 13, 0x7000, 0xA82A);
  1404. extern pascal ComponentResult MTRecorderGetStorageSpaceRemaining(MTRecorderComponent rc, UInt32 *bytes)
  1405.  FIVEWORDINLINE(0x2F3C, 0x4, 14, 0x7000, 0xA82A);
  1406. extern pascal ComponentResult MTRecorderGetTimeRemaining(MTRecorderComponent rc, UInt32 *ticksLeft)
  1407.  FIVEWORDINLINE(0x2F3C, 0x4, 15, 0x7000, 0xA82A);
  1408. extern pascal ComponentResult MTRecorderGetLastMovieResID(MTRecorderComponent rc, short *resID)
  1409.  FIVEWORDINLINE(0x2F3C, 0x4, 16, 0x7000, 0xA82A);
  1410.  
  1411. enum {
  1412.     mtControllerActionDraw        = 2,                            /* param is WindowPtr */
  1413.     mtControllerActionActivate    = 3,                            /* no param */
  1414.     mtControllerActionDeactivate = 4,                            /* no param */
  1415.     mtControllerActionMouseDown    = 5,                            /* param is pointer to EventRecord */
  1416.     mtControllerActionKey        = 6,                            /* param is pointer to EventRecord */
  1417.     mtControllerActionPlay        = 8,                            /* param is Boolean, play = true, stop = false */
  1418.     mtControllerActionSetVolume    = 14,                            /* param is a short */
  1419.     mtControllerActionGetVolume    = 15,                            /* param is pointer to a short */
  1420.     mtControllerActionSetGain    = 16,                            /* param is a short */
  1421.     mtControllerActionGetGain    = 17,                            /* param is pointer to a short */
  1422.     mtControllerActionSetGrowBoxBounds = 25,                    /* param is a Rect */
  1423.     mtControllerActionControllerSizeChanged = 26,                /* param is Boolean*/
  1424.     mtControllerActionSetKeysEnabled = 32,                        /* param is Boolean */
  1425.     mtControllerActionGetKeysEnabled = 33,                        /* param is pointer to Boolean */
  1426.     mtControllerActionSetFlags    = 38,                            /* param is long of flags */
  1427.     mtControllerActionGetFlags    = 39,                            /* param is pointer to a long of flags */
  1428.     mtControllerActionShowBalloon = 43,                            /* param is a pointer to a boolean. set to false to stop balloon */
  1429.     mtControllerActionClick        = 45,                            /* param is pointer to event record. change “what” to nullEvt to kill click */
  1430.     mtControllerActionSuspend    = 46,                            /* no param */
  1431.     mtControllerActionResume    = 47,                            /* no param */
  1432.     mtControllerActionGetDragEnabled = 51,                        /* param is pointer to Boolean */
  1433.     mtControllerActionSetDragEnabled = 52,                        /* param is Boolean */
  1434.     mtControllerActionStartRecord = 60,                            /* param is Boolean, start = true, stop = false */
  1435.     mtControllerActionStreamsChanged = 61,                        /* param is ComponentResult (OSErr)*/
  1436.     mtControllerActionSnapshot    = 62,                            /* param is PicHandle to picture */
  1437.     mtControllerActionSnapshotData = 63,                        /* param is PicHandle to picture*/
  1438.     mtControllerActionSetEnableSnapshot = 70,                    /* param is Boolean */
  1439.     mtControllerActionSetEnableSound = 71,                        /* param is Boolean */
  1440.     mtControllerActionSetEnablePlay = 72,                        /* param is Boolean */
  1441.     mtControllerActionSetEnableRecord = 73,                        /* param is Boolean */
  1442.     mtControllerActionSetEnableGain = 74,                        /* param is Boolean */
  1443.     mtControllerActionGetEnableSnapshot = 75,                    /* param is Boolean */
  1444.     mtControllerActionGetEnableSound = 76,                        /* param is Boolean */
  1445.     mtControllerActionGetEnablePlay = 77,                        /* param is Boolean */
  1446.     mtControllerActionGetEnableRecord = 78,                        /* param is Boolean */
  1447.     mtControllerActionGetEnableGain = 79,                        /* param is Boolean */
  1448.     mtControllerActionSetShowSnapshot = 80,                        /* param is Boolean */
  1449.     mtControllerActionSetShowSound = 81,                        /* param is Boolean */
  1450.     mtControllerActionSetShowPlay = 82,                            /* param is Boolean */
  1451.     mtControllerActionSetShowRecord = 83,                        /* param is Boolean */
  1452.     mtControllerActionSetShowGain = 84,                            /* param is Boolean */
  1453.     mtControllerActionGetShowSnapshot = 85,                        /* param is Boolean */
  1454.     mtControllerActionGetShowSound = 86,                        /* param is Boolean */
  1455.     mtControllerActionGetShowPlay = 87,                            /* param is Boolean */
  1456.     mtControllerActionGetShowRecord = 88,                        /* param is Boolean     */
  1457.     mtControllerActionGetShowGain = 89                            /* param is Boolean     */
  1458. };
  1459.  
  1460. typedef short MTControllerActionType;
  1461.  
  1462. /* flags for MTControllerPositionController */
  1463.  
  1464. enum {
  1465.     mtControllerTopLeftChannel    = 1 << 0,                        /* usually centered */
  1466.     mtControllerScaleChannelToFit = 1 << 1,                        /* usually only scales down */
  1467.     mtControllerNotVisible        = 1 << 3,                        /* don't show controller */
  1468.     mtControllerWithFrame        = 1 << 4,                        /* gimme a frame */
  1469.     mtControllerPositionDontInvalidate = 1 << 5                    /* don't invalidate the region when positioning */
  1470. };
  1471.  
  1472. /* flags for mtControllerActionSetFlags action */
  1473. enum {
  1474.     mtControllerFlagSuppressChannelFrame = 1 << 0,
  1475.     mtControllerFlagSuppressSpeakerButton = 1 << 2,
  1476.     mtControllerFlagsUseWindowPalette = 1 << 3,
  1477.     mtControllerFlagsDontInvalidate = 1 << 4
  1478. };
  1479.  
  1480. /* flags for MTControllerGetControllerInfo */
  1481. enum {
  1482.     mtControllerInfoCopyAvailable = 1 << 2,
  1483.     mtControllerInfoHasSound    = 1 << 5,
  1484.     mtControllerInfoIsPlaying    = 1 << 6,
  1485.     mtControllerInfoIsRecording    = 1 << 7
  1486. };
  1487.  
  1488. typedef long MTControllerInfoType;
  1489.  
  1490. /*-----------------------------------------
  1491.     Controller call back functions
  1492. -----------------------------------------*/
  1493. typedef pascal Boolean (*MTControllerActionFilterProcPtr)(MTControllerComponent mtc, MTControllerActionType action, void *params, long refCon);
  1494.  
  1495. #if GENERATINGCFM
  1496. typedef UniversalProcPtr MTControllerActionFilterUPP;
  1497. #else
  1498. typedef MTControllerActionFilterProcPtr MTControllerActionFilterUPP;
  1499. #endif
  1500.  
  1501. enum {
  1502.     uppMTControllerActionFilterProcInfo = kPascalStackBased
  1503.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  1504.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(MTControllerComponent)))
  1505.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(MTControllerActionType)))
  1506.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void*)))
  1507.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))
  1508. };
  1509.  
  1510. #if GENERATINGCFM
  1511. #define NewMTControllerActionFilterProc(userRoutine)        \
  1512.         (MTControllerActionFilterUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMTControllerActionFilterProcInfo, GetCurrentArchitecture())
  1513. #else
  1514. #define NewMTControllerActionFilterProc(userRoutine)        \
  1515.         ((MTControllerActionFilterUPP) (userRoutine))
  1516. #endif
  1517.  
  1518. #if GENERATINGCFM
  1519. #define CallMTControllerActionFilterProc(userRoutine, mtc, action, params, refCon)        \
  1520.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppMTControllerActionFilterProcInfo, (mtc), (action), (params), (refCon))
  1521. #else
  1522. #define CallMTControllerActionFilterProc(userRoutine, mtc, action, params, refCon)        \
  1523.         (*(userRoutine))((mtc), (action), (params), (refCon))
  1524. #endif
  1525.  
  1526. /*-----------------------------------------
  1527.     Controller selectors
  1528. -----------------------------------------*/
  1529.  
  1530. enum {
  1531.     kMTControllerSetStreamDirectorSelect = 1,
  1532.     kMTControllerGetStreamDirectorSelect = 2,
  1533.     kMTControllerRemoveStreamDirectorSelect = 3,
  1534.     kMTControllerIsControllerEventSelect = 4,
  1535.     kMTControllerDoActionSelect    = 5,
  1536.     kMTControllerSetControllerAttachedSelect = 6,
  1537.     kMTControllerIsControllerAttachedSelect = 7,
  1538.     kMTControllerSetControllerPortSelect = 8,
  1539.     kMTControllerGetControllerPortSelect = 9,
  1540.     kMTControllerSetVisibleSelect = 10,
  1541.     kMTControllerGetVisibleSelect = 11,
  1542.     kMTControllerSetControllerBoundsRectSelect = 12,
  1543.     kMTControllerGetControllerBoundsRectSelect = 13,
  1544.     kMTControllerGetControllerBoundsRgnSelect = 14,
  1545.     kMTControllerGetWindowRgnSelect = 15,
  1546.     kMTControllerChangedStreamsSelect = 16,
  1547.     kMTControllerNewAttachedControllerSelect = 17,
  1548.     kMTControllerDrawSelect        = 18,
  1549.     kMTControllerActivateSelect    = 19,
  1550.     kMTControllerKeySelect        = 20,
  1551.     kMTControllerClickSelect    = 21,
  1552.     kMTControllerSnapshotSelect    = 22,
  1553.     kMTControllerPositionControllerSelect = 23,
  1554.     kMTControllerGetControllerInfoSelect = 24,
  1555.     kMTControllerSetClipSelect    = 25,
  1556.     kMTControllerGetClipSelect    = 26,
  1557.     kMTControllerSetActionFilterSelect = 27
  1558. };
  1559.  
  1560. /*-----------------------------------------
  1561.     Controller prototypes
  1562. -----------------------------------------*/
  1563. extern pascal ComponentResult MTControllerSetStreamDirector(MTControllerComponent mtc, MTDirectorComponent sd, WindowPtr displayWindow, Point where)
  1564.  FIVEWORDINLINE(0x2F3C, 0xC, 1, 0x7000, 0xA82A);
  1565. extern pascal MTDirectorComponent MTControllerGetStreamDirector(MTControllerComponent mtc)
  1566.  FIVEWORDINLINE(0x2F3C, 0, 2, 0x7000, 0xA82A);
  1567. extern pascal ComponentResult MTControllerRemoveStreamDirector(MTControllerComponent mtc)
  1568.  FIVEWORDINLINE(0x2F3C, 0, 3, 0x7000, 0xA82A);
  1569. extern pascal ComponentResult MTControllerIsControllerEvent(MTControllerComponent mtc, const EventRecord *e)
  1570.  FIVEWORDINLINE(0x2F3C, 0x4, 4, 0x7000, 0xA82A);
  1571. extern pascal ComponentResult MTControllerDoAction(MTControllerComponent mtc, MTControllerActionType action, void *params)
  1572.  FIVEWORDINLINE(0x2F3C, 0x6, 5, 0x7000, 0xA82A);
  1573. extern pascal ComponentResult MTControllerSetControllerAttached(MTControllerComponent mtc, Boolean attach)
  1574.  FIVEWORDINLINE(0x2F3C, 0x2, 6, 0x7000, 0xA82A);
  1575. extern pascal ComponentResult MTControllerIsControllerAttached(MTControllerComponent mtc)
  1576.  FIVEWORDINLINE(0x2F3C, 0, 7, 0x7000, 0xA82A);
  1577. extern pascal ComponentResult MTControllerSetControllerPort(MTControllerComponent mtc, CGrafPtr gp)
  1578.  FIVEWORDINLINE(0x2F3C, 0x4, 8, 0x7000, 0xA82A);
  1579. extern pascal CGrafPtr MTControllerGetControllerPort(MTControllerComponent mtc)
  1580.  FIVEWORDINLINE(0x2F3C, 0, 9, 0x7000, 0xA82A);
  1581. extern pascal ComponentResult MTControllerSetVisible(MTControllerComponent mtc, Boolean visible)
  1582.  FIVEWORDINLINE(0x2F3C, 0x2, 10, 0x7000, 0xA82A);
  1583. extern pascal ComponentResult MTControllerGetVisible(MTControllerComponent mtc)
  1584.  FIVEWORDINLINE(0x2F3C, 0, 11, 0x7000, 0xA82A);
  1585. extern pascal ComponentResult MTControllerSetControllerBoundsRect(MTControllerComponent mtc, const Rect *bounds)
  1586.  FIVEWORDINLINE(0x2F3C, 0x4, 12, 0x7000, 0xA82A);
  1587. extern pascal ComponentResult MTControllerGetControllerBoundsRect(MTControllerComponent mtc, Rect *bounds)
  1588.  FIVEWORDINLINE(0x2F3C, 0x4, 13, 0x7000, 0xA82A);
  1589. extern pascal RgnHandle MTControllerGetControllerBoundsRgn(MTControllerComponent mtc)
  1590.  FIVEWORDINLINE(0x2F3C, 0, 14, 0x7000, 0xA82A);
  1591. extern pascal RgnHandle MTControllerGetWindowRgn(MTControllerComponent mtc, WindowPtr w)
  1592.  FIVEWORDINLINE(0x2F3C, 0x4, 15, 0x7000, 0xA82A);
  1593. extern pascal ComponentResult MTControllerChangedStreams(MTControllerComponent mtc, Boolean finished)
  1594.  FIVEWORDINLINE(0x2F3C, 2, 16, 0x7000, 0xA82A);
  1595. extern pascal ComponentResult MTControllerNewAttachedController(MTControllerComponent mtc, MTDirectorComponent sd, WindowPtr w, Point where)
  1596.  FIVEWORDINLINE(0x2F3C, 0xC, 17, 0x7000, 0xA82A);
  1597. extern pascal ComponentResult MTControllerDraw(MTControllerComponent mtc, WindowPtr w)
  1598.  FIVEWORDINLINE(0x2F3C, 0x4, 18, 0x7000, 0xA82A);
  1599. extern pascal ComponentResult MTControllerActivate(MTControllerComponent mtc, WindowPtr w, Boolean activate)
  1600.  FIVEWORDINLINE(0x2F3C, 0x6, 19, 0x7000, 0xA82A);
  1601. extern pascal ComponentResult MTControllerKey(MTControllerComponent mtc, char key, long modifiers)
  1602.  FIVEWORDINLINE(0x2F3C, 0x6, 20, 0x7000, 0xA82A);
  1603. extern pascal ComponentResult MTControllerClick(MTControllerComponent mtc, WindowPtr w, Point where, long when, long modifiers)
  1604.  FIVEWORDINLINE(0x2F3C, 0x10, 21, 0x7000, 0xA82A);
  1605. extern pascal ComponentResult MTControllerSnapshot(MTControllerComponent mtc, PicHandle *picture)
  1606.  FIVEWORDINLINE(0x2F3C, 0x4, 22, 0x7000, 0xA82A);
  1607. extern pascal ComponentResult MTControllerPositionController(MTControllerComponent mtc, const Rect *imageRect, const Rect *controllerRect, long someFlags)
  1608.  FIVEWORDINLINE(0x2F3C, 0xC, 23, 0x7000, 0xA82A);
  1609. extern pascal ComponentResult MTControllerGetControllerInfo(MTControllerComponent mtc, MTControllerInfoType *someFlags)
  1610.  FIVEWORDINLINE(0x2F3C, 0x4, 24, 0x7000, 0xA82A);
  1611. extern pascal ComponentResult MTControllerSetClip(MTControllerComponent mtc, RgnHandle theClip, RgnHandle imageClip)
  1612.  FIVEWORDINLINE(0x2F3C, 0x8, 25, 0x7000, 0xA82A);
  1613. extern pascal ComponentResult MTControllerGetClip(MTControllerComponent mtc, RgnHandle *theClip, RgnHandle *imageClip)
  1614.  FIVEWORDINLINE(0x2F3C, 0x8, 26, 0x7000, 0xA82A);
  1615. extern pascal ComponentResult MTControllerSetActionFilter(MTControllerComponent mtc, MTControllerActionFilterUPP actionFilter, long refCon)
  1616.  FIVEWORDINLINE(0x2F3C, 0x8, 27, 0x7000, 0xA82A);
  1617.  
  1618. enum {
  1619.     kMTConferenceWindowKind        = 621
  1620. };
  1621.  
  1622. /*-----------------------------------------
  1623.     Conference data types
  1624. -----------------------------------------*/
  1625. typedef unsigned char MTCString32[33], MTCString63[64];
  1626.  
  1627. struct MTRString60 {
  1628.     short                            charSet;                    /* script code */
  1629.     short                            dataLength;
  1630.     Byte                            body[60];
  1631. };
  1632. typedef struct MTRString60 MTRString60, *MTRString60Ptr;
  1633.  
  1634. /* refers to a conference */
  1635. typedef long MTConferenceToken;
  1636.  
  1637. /* refers to an auxiliary source */
  1638. typedef long MTAuxiliaryToken;
  1639.  
  1640. /* refers to a conference member */
  1641. typedef long MTConferenceMember;
  1642.  
  1643. /*-----------------------------------------
  1644.     Conference mode bits
  1645. -----------------------------------------*/
  1646.  
  1647. enum {
  1648.     mtSendMediaModeMask            = 0x0001,
  1649.     mtReceiveMediaModeMask        = 0x0002,
  1650.     mtShareableModeMask            = 0x0004,
  1651.     mtJoinerModeMask            = 0x0008,
  1652.     mtDesiredMessagesModeMask    = 0x0100,                        /* only on mtPhoneRingingEvent, mtIncomingCallEvent, and mtMemberJoiningEvent */
  1653.     mtRequiredMessagesModeMask    = 0x0200                        /* only on mtPhoneRingingEvent and mtIncomingCallEvent*/
  1654. };
  1655.  
  1656. typedef UInt16 MTConferenceModeFlags;
  1657.  
  1658. /*-----------------------------------------
  1659.     Conference prepared bits
  1660. -----------------------------------------*/
  1661.  
  1662. enum {
  1663.     mtGrabVideoPrepMask            = 0x00000001,
  1664.     mtGrabAudioPrepMask            = 0x00000002,
  1665.     mtGrabOtherPrepMask            = 0x00000008,
  1666.     mtAuxiliaryClosePrepMask    = 0x00000100,
  1667.     mtMediaSourcePrepMask        = 0x00008000,
  1668.     mtEnableSnapshotPrepMask    = 0x00100000,
  1669.     mtEnableRecordPrepMask        = 0x00200000,
  1670.     mtWindowVisiblePrepMask        = 0x01000000,
  1671.     mtControllerVisiblePrepMask    = 0x02000000,
  1672.     mtNoAutoResizePrepMask        = 0x04000000,
  1673.     mtAutoPositionPrepMask        = 0x08000000
  1674. };
  1675.  
  1676. typedef UInt32 MTConferencePrepFlags;
  1677.  
  1678. /*-----------------------------------------
  1679.     Conference event reasons
  1680. -----------------------------------------*/
  1681. /*    what                                                            err            who                bonus                reserved        surprise */
  1682.  
  1683. enum {
  1684.     mtListenerStatusEvent        = 11,                            /*    status        --                network-type        transport-type    -- */
  1685.     mtIncomingCallEvent            = 12,                            /*    --            MTConferenceMember    cm-mode-bits        remote-timeout    -- */
  1686.     mtMemberJoiningEvent        = 13,                            /*    --            MTConferenceMember    cm-mode-bits        parent            -- */
  1687.     mtMemberMovedEvent            = 14,                            /*    --            MTConferenceMember    --                    --                -- */
  1688.     mtMessageArrivedEvent        = 15,                            /*    --            MTConferenceMember    message-version        message-type    message-handle */
  1689.     mtPhoneRingingEvent            = 16,                            /*    --            MTConferenceMember    cm-mode-bits        --                -- */
  1690.     mtConferenceReadyEvent        = 21,                            /*    --            MTConferenceToken        mode-bits            --                -- */
  1691.     mtConferenceTerminatedEvent    = 22,                            /*    --            MTConferenceToken        MTController        --                -- */
  1692.     mtAuxiliaryTerminatedEvent    = 23,                            /*    --            MTAuxiliaryToken        MTController        --                -- */
  1693.     mtConferenceNameChangedEvent = 24,                            /*    --            MTConferenceToken        --                    --                -- */
  1694.     mtMemberReadyEvent            = 31,                            /*    --            MTConferenceMember    mode-bits            --                -- */
  1695.     mtMemberTerminatedEvent        = 32,                            /*    --            MTConferenceMember    MTController        --                -- */
  1696.     mtRefusedEvent                = 33,                            /*    response    MTConferenceMember    --                    --                -- */
  1697.     mtFailedEvent                = 34,                            /*    error-code    MTConferenceMember    --                    --                -- */
  1698.     mtSnapshotTakenEvent        = 41,                            /*    --            CM/CT/0            MTController        --                pic-handle */
  1699.     mtMovieRecordedEvent        = 42                            /*    --            CM/CT/0            MTController        --                fsspec-handle */
  1700. };
  1701.  
  1702. typedef short MTConferenceEventType;
  1703.  
  1704. /*-----------------------------------------
  1705.     Conference event structure
  1706. -----------------------------------------*/
  1707. struct MTConferenceEvent {
  1708.     MTConferenceEventType            what;
  1709.     OSErr                            err;
  1710.     long                            who;
  1711.     long                            bonus;
  1712.     long                            reserved;
  1713.     Handle                            surprise;
  1714. };
  1715. typedef struct MTConferenceEvent MTConferenceEvent, *MTConferenceEventPtr;
  1716.  
  1717. /*-----------------------------------------
  1718.     Conference capability types
  1719. -----------------------------------------*/
  1720.  
  1721. enum {
  1722.     mtMessageOptionalCapability    = 'O',
  1723.     mtMessageDesiredCapability    = 'D',
  1724.     mtMessageRequiredCapability    = 'R',
  1725.     mtNegotiationMessageCapability = 'N'
  1726. };
  1727.  
  1728. typedef char MTConferenceCapabilityType;
  1729.  
  1730. /*-----------------------------------------
  1731.     Conference capabilities structure
  1732. -----------------------------------------*/
  1733. struct MTCapabilitiesEntry {
  1734.     OSType                            messageType;
  1735.     unsigned char                    version;
  1736.     MTConferenceCapabilityType        desires;
  1737.     short                            reserved;
  1738. };
  1739. typedef struct MTCapabilitiesEntry MTCapabilitiesEntry, *MTCapabilitiesPtr;
  1740.  
  1741. struct MTCapabilitiesList {
  1742.     UInt32                            count;
  1743.     MTCapabilitiesEntry                capability[kMTVariableLengthArray]; /* really count entries */
  1744. };
  1745. typedef struct MTCapabilitiesList MTCapabilitiesList, *MTCapabilitiesListPtr, **MTCapabilitiesHandle;
  1746.  
  1747. /*-----------------------------------------
  1748.     Conference selectors
  1749. -----------------------------------------*/
  1750.  
  1751. enum {
  1752.     kMTConferenceListenSelect    = 1,
  1753.     kMTConferenceTerminateSelect = 2,
  1754.     kMTConferenceCallSelect        = 3,
  1755.     kMTConferenceReplySelect    = 4,
  1756.     kMTConferenceMergeSelect    = 5,
  1757.     kMTConferenceDetachMemberSelect = 6,
  1758.     kMTConferenceGetNextEventSelect = 7,
  1759.     kMTConferenceGetMemberNameSelect = 8,
  1760.     kMTConferenceGetMemberConferenceSelect = 9,
  1761.     kMTConferenceGetReturnAddressSelect = 10,
  1762.     kMTConferenceGetRegisteredNamesSelect = 11,
  1763.     kMTConferenceGetConferenceNameSelect = 12,
  1764.     kMTConferenceActivateConferenceSelect = 13,
  1765.     kMTConferenceActivateMemberSelect = 14,
  1766.     kMTConferenceSendMessageToConferenceSelect = 15,
  1767.     kMTConferenceSendMessageToMemberSelect = 16,
  1768.     kMTConferenceSetModeSelect    = 17,
  1769.     kMTConferenceSetCallTimeoutSelect = 18,
  1770.     kMTConferenceSetDefaultWindowProcIDSelect = 19,
  1771.     kMTConferenceSetDefaultActionFilterSelect = 20,
  1772.     kMTConferenceSetPreparationDefaultsSelect = 21,
  1773.     kMTConferenceNewPreparedControllerSelect = 22,
  1774.     kMTConferenceDisposeControllerSelect = 23,
  1775.     kMTConferenceSetMessageCapabilitiesSelect = 24,
  1776.     kMTConferenceGetMemberMessageCapabilitiesSelect = 25,
  1777.     kMTConferenceAttachAuxiliarySourceSelect = 26,
  1778.     kMTConferenceDetachAuxiliarySourceSelect = 27,
  1779.     kMTConferenceNameFromRStringSelect = 28,
  1780.     kMTConferenceRStringFromNameSelect = 29
  1781. };
  1782.  
  1783. /*-----------------------------------------
  1784.     Conference prototypes
  1785. -----------------------------------------*/
  1786. extern pascal ComponentResult MTConferenceListen(MTConferenceComponent cc, MTCString63 userName, MTCString32 serviceName, MTCString serviceTypesList)
  1787.  FIVEWORDINLINE(0x2F3C, 12, 1, 0x7000, 0xA82A);
  1788. extern pascal ComponentResult MTConferenceTerminate(MTConferenceComponent cc, MTConferenceToken theConference)
  1789.  FIVEWORDINLINE(0x2F3C, 4, 2, 0x7000, 0xA82A);
  1790. extern pascal MTConferenceMember MTConferenceCall(MTConferenceComponent cc, MTCString63 confName, MTNamePtr whoToCall)
  1791.  FIVEWORDINLINE(0x2F3C, 8, 3, 0x7000, 0xA82A);
  1792. extern pascal ComponentResult MTConferenceReply(MTConferenceComponent cc, MTConferenceMember callingParty, OSErr response)
  1793.  FIVEWORDINLINE(0x2F3C, 6, 4, 0x7000, 0xA82A);
  1794. extern pascal ComponentResult MTConferenceMerge(MTConferenceComponent cc, MTConferenceToken staysAround, MTConferenceToken goesAway)
  1795.  FIVEWORDINLINE(0x2F3C, 8, 5, 0x7000, 0xA82A);
  1796. extern pascal ComponentResult MTConferenceDetachMember(MTConferenceComponent cc, MTConferenceMember theMember)
  1797.  FIVEWORDINLINE(0x2F3C, 4, 6, 0x7000, 0xA82A);
  1798. extern pascal ComponentResult MTConferenceGetNextEvent(MTConferenceComponent cc, MTConferenceEventPtr theEvent)
  1799.  FIVEWORDINLINE(0x2F3C, 4, 7, 0x7000, 0xA82A);
  1800. extern pascal MTCString MTConferenceGetMemberName(MTConferenceComponent cc, MTConferenceMember theMember)
  1801.  FIVEWORDINLINE(0x2F3C, 4, 8, 0x7000, 0xA82A);
  1802. extern pascal MTConferenceToken MTConferenceGetMemberConference(MTConferenceComponent cc, MTConferenceMember theMember)
  1803.  FIVEWORDINLINE(0x2F3C, 4, 9, 0x7000, 0xA82A);
  1804. extern pascal MTNameListPtr MTConferenceGetReturnAddress(MTConferenceComponent cc, MTConferenceMember theMember)
  1805.  FIVEWORDINLINE(0x2F3C, 4, 10, 0x7000, 0xA82A);
  1806. extern pascal MTNameListPtr MTConferenceGetRegisteredNames(MTConferenceComponent cc)
  1807.  FIVEWORDINLINE(0x2F3C, 0, 11, 0x7000, 0xA82A);
  1808. extern pascal MTCString MTConferenceGetConferenceName(MTConferenceComponent cc, MTConferenceToken theConference)
  1809.  FIVEWORDINLINE(0x2F3C, 4, 12, 0x7000, 0xA82A);
  1810. extern pascal ComponentResult MTConferenceActivateConference(MTConferenceComponent cc, MTConferenceToken theConference, MTControllerComponent selfController)
  1811.  FIVEWORDINLINE(0x2F3C, 8, 13, 0x7000, 0xA82A);
  1812. extern pascal ComponentResult MTConferenceActivateMember(MTConferenceComponent cc, MTConferenceMember theMember, MTControllerComponent memberController)
  1813.  FIVEWORDINLINE(0x2F3C, 8, 14, 0x7000, 0xA82A);
  1814. extern pascal ComponentResult MTConferenceSendMessageToConference(MTConferenceComponent cc, MTConferenceToken theConference, Handle theMessage, OSType messageType, short version)
  1815.  FIVEWORDINLINE(0x2F3C, 14, 15, 0x7000, 0xA82A);
  1816. extern pascal ComponentResult MTConferenceSendMessageToMember(MTConferenceComponent cc, MTConferenceMember theMember, Handle theMessage, OSType messageType, short version)
  1817.  FIVEWORDINLINE(0x2F3C, 14, 16, 0x7000, 0xA82A);
  1818. extern pascal ComponentResult MTConferenceSetMode(MTConferenceComponent cc, MTConferenceModeFlags defaultMode)
  1819.  FIVEWORDINLINE(0x2F3C, 2, 17, 0x7000, 0xA82A);
  1820. extern pascal ComponentResult MTConferenceSetCallTimeout(MTConferenceComponent cc, short callTimeout)
  1821.  FIVEWORDINLINE(0x2F3C, 2, 18, 0x7000, 0xA82A);
  1822. extern pascal ComponentResult MTConferenceSetDefaultWindowProcID(MTConferenceComponent cc, short windowProcID)
  1823.  FIVEWORDINLINE(0x2F3C, 2, 19, 0x7000, 0xA82A);
  1824. extern pascal ComponentResult MTConferenceSetDefaultActionFilter(MTConferenceComponent cc, MTControllerActionFilterUPP actionProc, long actionRefcon)
  1825.  FIVEWORDINLINE(0x2F3C, 8, 20, 0x7000, 0xA82A);
  1826. extern pascal ComponentResult MTConferenceSetPreparationDefaults(MTConferenceComponent cc, OSType controllerSubtype, OSType compressorSubtype, OSType sourceDirectorSubtype, OSType sinkDirectorSubtype, OSType recorderSubtype)
  1827.  FIVEWORDINLINE(0x2F3C, 20, 21, 0x7000, 0xA82A);
  1828. extern pascal MTControllerComponent MTConferenceNewPreparedController(MTConferenceComponent cc, const Rect *windowRect, MTConferencePrepFlags prepFlags, MTCString windowTitle)
  1829.  FIVEWORDINLINE(0x2F3C, 12, 22, 0x7000, 0xA82A);
  1830. extern pascal ComponentResult MTConferenceDisposeController(MTConferenceComponent cc, MTControllerComponent controller)
  1831.  FIVEWORDINLINE(0x2F3C, 4, 23, 0x7000, 0xA82A);
  1832. extern pascal ComponentResult MTConferenceSetMessageCapabilities(MTConferenceComponent cc, MTCapabilitiesHandle myCapabilities)
  1833.  FIVEWORDINLINE(0x2F3C, 4, 24, 0x7000, 0xA82A);
  1834. extern pascal MTCapabilitiesHandle MTConferenceGetMemberMessageCapabilities(MTConferenceComponent cc, MTConferenceMember theMember)
  1835.  FIVEWORDINLINE(0x2F3C, 4, 25, 0x7000, 0xA82A);
  1836. extern pascal MTAuxiliaryToken MTConferenceAttachAuxiliarySource(MTConferenceComponent cc, MTConferenceToken theConference, MTControllerComponent controller, MTCString63 auxName)
  1837.  FIVEWORDINLINE(0x2F3C, 12, 26, 0x7000, 0xA82A);
  1838. extern pascal ComponentResult MTConferenceDetachAuxiliarySource(MTConferenceComponent cc, MTAuxiliaryToken theAuxiliary)
  1839.  FIVEWORDINLINE(0x2F3C, 4, 27, 0x7000, 0xA82A);
  1840. extern pascal ComponentResult MTConferenceNameFromRString(MTConferenceComponent cc, MTCString63 name, MTRString60Ptr rString)
  1841.  FIVEWORDINLINE(0x2F3C, 8, 28, 0x7000, 0xA82A);
  1842. extern pascal ComponentResult MTConferenceRStringFromName(MTConferenceComponent cc, MTRString60Ptr rString, MTCString63 name)
  1843.  FIVEWORDINLINE(0x2F3C, 8, 29, 0x7000, 0xA82A);
  1844.  
  1845. enum {
  1846.     kMTOpenConnectionMessageType = 'opnc',
  1847.     kMTCloseConnectionMessageType = 'clsc',
  1848.     kMTConnectedMessageType        = 'sdcn',
  1849.     kMTOpenChannelMessageType    = 'ochn',
  1850.     kMTOpenStreamMessageType    = 'ostm',
  1851.     kMTAcknowledgeMessageType    = 'ack!',
  1852.     kMTStreamPayloadMessageType    = 'strm',
  1853.     kMTKeepAliveMessageType        = 'keep'
  1854. };
  1855.  
  1856. /*-----------------------------------------
  1857.     MovieTalk open connection message
  1858. -----------------------------------------*/
  1859. typedef UInt32 MTProtocolVersion;
  1860.  
  1861. struct MTOpenConnectionMessage {
  1862.     MTStandardID                    msgType;                    /* set to kMTOpenConnectionMessageType */
  1863.     MTMessageSize                    msgSize;                    /* size of entire message */
  1864.     MTProtocolVersion                protocolVersion;            /* of the MovieTalk protocol */
  1865.     MTAddress                        address;                    /* MovieTalk address */
  1866. };
  1867. typedef struct MTOpenConnectionMessage MTOpenConnectionMessage, *MTOpenConnectionMessagePtr;
  1868.  
  1869. /*-----------------------------------------
  1870.     MovieTalk close connection message
  1871. -----------------------------------------*/
  1872. struct MTCloseConnectionMessage {
  1873.     MTStandardID                    msgType;                    /* set to kMTCloseConnectionMessageType */
  1874.     MTMessageSize                    msgSize;                    /* size of entire message */
  1875. };
  1876. typedef struct MTCloseConnectionMessage MTCloseConnectionMessage, *MTCloseConnectionMessagePtr;
  1877.  
  1878. /*-----------------------------------------
  1879.     MovieTalk ready connection message
  1880. -----------------------------------------*/
  1881. struct MTConnectedMessage {
  1882.     MTStandardID                    msgType;                    /* set to kMTConnectedMessageType */
  1883.     MTMessageSize                    msgSize;                    /* size of entire message */
  1884. };
  1885. typedef struct MTConnectedMessage MTConnectedMessage, *MTConnectedMessagePtr;
  1886.  
  1887. /*-----------------------------------------
  1888.     MovieTalk open channel message
  1889. -----------------------------------------*/
  1890. struct MTOpenChannelMessage {
  1891.     MTStandardID                    msgType;                    /* set to kMTOpenChannelMessageType */
  1892.     MTMessageSize                    msgSize;                    /* size of entire message */
  1893.     MTStreamCount                    numStreams;
  1894.     MTStreamID                        streamID[kMTVariableLengthArray]; /* minimum size zero */
  1895. };
  1896. typedef struct MTOpenChannelMessage MTOpenChannelMessage, *MTOpenChannelMessagePtr;
  1897.  
  1898. /*-----------------------------------------
  1899.     MovieTalk open stream message
  1900. -----------------------------------------*/
  1901. struct MTOpenStreamMessage {
  1902.     MTStandardID                    msgType;                    /* set to kMTOpenStreamMessageType */
  1903.     MTMessageSize                    msgSize;                    /* size of entire message */
  1904.     MTStreamType                    streamType;
  1905.     MTStreamID                        streamID;
  1906.     MTStreamReference                streamReference;
  1907.     TimeScale                        streamTimeScale;
  1908. /* the rest of the payload is a SampleDescription */
  1909. };
  1910. typedef struct MTOpenStreamMessage MTOpenStreamMessage, *MTOpenStreamMessagePtr;
  1911.  
  1912. /*-----------------------------------------
  1913.     MovieTalk acknowledge message
  1914. -----------------------------------------*/
  1915. struct MTAcknowledgeMessage {
  1916.     MTStandardID                    msgType;                    /* set to kMTAcknowledgeMessageType */
  1917.     MTMessageSize                    msgSize;                    /* size of entire message */
  1918.     MTStandardID                    ackMessageType;                /* type of message being acknowledged */
  1919.     MTMessageSize                    ackErrorCode;                /* error code of message being acknowledged */
  1920.     MTMessageSize                    ackID;                        /* optional identifier tag for message */
  1921. };
  1922. typedef struct MTAcknowledgeMessage MTAcknowledgeMessage, *MTAcknowledgeMessagePtr;
  1923.  
  1924. /*-----------------------------------------
  1925.     MovieTalk stream payload message
  1926. -----------------------------------------*/
  1927.  
  1928. enum {
  1929.     kMTStreamSequenceLast        = 0x8000,
  1930.     kMTStreamSequenceMask        = 0x7FFF
  1931. };
  1932.  
  1933. typedef UInt16 MTStreamSequence;
  1934.  
  1935. struct MTStreamPayloadMessage {
  1936.     MTStandardID                    msgType;                    /* set to kMTStreamPayloadMessageType */
  1937.     MTMessageSize                    msgSize;                    /* size of entire message */
  1938.     MTChunkTime                        streamTime;
  1939.     MTStreamID                        streamID;
  1940.     MTChunkPriority                    streamPriority;
  1941.     MTStreamOptions                    streamOptions;
  1942.     MTMessageSize                    streamChunkSize;
  1943.     MTSequenceNum                    packetNumber;
  1944.     MTSequenceNum                    frameNumber;
  1945.     MTStreamSequence                streamSequenceNum;
  1946. };
  1947. typedef struct MTStreamPayloadMessage MTStreamPayloadMessage, *MTStreamPayloadMessagePtr;
  1948.  
  1949. /*-----------------------------------------
  1950.     MovieTalk keep alive message
  1951. -----------------------------------------*/
  1952. typedef UInt32 MTAliveOptions;
  1953.  
  1954.  
  1955. enum {
  1956.     mtReverseChannelAddressOption = 0x00000040
  1957. };
  1958.  
  1959. struct MTKeepAliveMessage {
  1960.     MTStandardID                    msgType;                    /* set to kMTKeepAliveMessageType */
  1961.     MTMessageSize                    msgSize;                    /* size of entire message */
  1962.     MTProtocolVersion                protocolVersion;            /* of the MovieTalk protocol */
  1963.     MTAliveOptions                    aliveOptions;
  1964. };
  1965. typedef struct MTKeepAliveMessage MTKeepAliveMessage, *MTKeepAliveMessagePtr;
  1966.  
  1967.  
  1968. #ifdef __CFM68K__
  1969. #pragma lib_export off
  1970. #endif
  1971.  
  1972. #if GENERATINGPOWERPC
  1973. #pragma options align=reset
  1974. #endif
  1975.  
  1976. #ifdef __cplusplus
  1977. }
  1978. #endif
  1979.  
  1980. #endif /* __QUICKTIMECONFERENCING__ */
  1981.